用户选择区域后,有一个名为checkCoverageGuest()
的函数。该功能检查用户选择的区域是否在该餐厅的覆盖范围内。如果餐厅处于覆盖范围内,则 checkCoverageGuest()
将返回 true 值。当该餐厅没有覆盖范围时,checkCoverageGuest()
将返回 false。
如果该值为 true,则进入下一个级别,即结账。如果该值为 false,屏幕将显示 toast 错误消息,表明所选餐厅不在覆盖范围内。
现在,此函数 checkCoverageGuest()
得出的所有结果均为 false。
这是我的代码。
private boolean checkCoverageGuest() {
try {
String url;
if (appPrefs.getLanguage().equalsIgnoreCase("ar"))
url = LinksConstants.TEST_SERVER_URL
+ LinksConstants.SEARCH_COVERAGE_AREA;
else
url = LinksConstants.TEST_SERVER_URL
+ LinksConstants.SEARCH_COVERAGE_AREA;
Intent startingIntent = getIntent();
city_id = getIntent().getStringExtra("id");
RequestParams params = new RequestParams();
params.put("area", city_id);
NetworkRestClient.post(url, params, new JsonHttpResponseHandler() {
@Override
public void onStart() {
super.onStart();
progressActivity.showLoading();
}
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
super.onSuccess(statusCode, headers, response);
progressActivity.showContent();
JSONObject[] restaurants_arr = null;
hasCoverageGuest = true;
try {
if (response != null) {
JSONArray restaurants = response.getJSONArray("restaurants");
// if restaurants deliver to that area
if (!restaurants.getString(0).equals("null")) {
restaurants_arr = new JSONObject[restaurants.length()];
int has_coverage = 1; // assume coverage is there..
for (int j = 0; j < Utils.cart_restaurants.size(); j++) {
RestaurantModel restaurant = Utils.cart_restaurants.get(j);
String restaurantCartID = restaurant.getId();
boolean found = false;
for (int i = 0; i < restaurants.length(); i++) {
restaurants_arr[i] = restaurants.getJSONObject(i);
String restaurantID = restaurants_arr[i].get("restaurant_id").toString();
if (restaurantCartID.equals(restaurantID)) {
found = true;
break;
}
} //end of inner for
if (found == false) {
Toast.makeText(CheckoutActivity.this, "There is no coverage for the Selected Area ", Toast.LENGTH_SHORT).show();
hasCoverageGuest = false;
break;
}
}
//end of outer for
} //end of if
else //if restaurants don't deliver to that area
{
hasCoverageGuest = false;
}
} // end of if response != null
} // end of try
catch (Exception ex) {
GSLogger.e(ex);
showError();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, String errorResponse, Throwable throwable) {
super.onFailure(statusCode, headers, errorResponse, throwable);
showError();
if (AppConstants.DEBUG_MODE)
showToast(errorResponse);
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
super.onFailure(statusCode, headers, throwable, errorResponse);
showError();
}
});
} catch (Exception ex) {
GSLogger.e(ex);
showError();
}
return hasCoverageGuest;
}
最佳答案
您需要有一个回调来指定成功或失败。一种方法是使用接口(interface)。
public interface notifyGuestCoverage {
void hasCoverage(int status);
}
在 onSuccess 中,
if (!restaurants.getString(0).equals("null")) {
notifyGuestCoverageObj.hasCoverage(true);
}
该接口(interface)将由需要具有覆盖率值的类来实现。例如,
class Example implements notifyGuestCoverage{
void hasCoverage(int status){
//your code
}
}
关于java - 总是返回 false 作为 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45271726/