Java 始终返回false作为布尔值
用户选择区域后,有一个名为Java 始终返回false作为布尔值,java,android,Java,Android,用户选择区域后,有一个名为checkCoverageGuest()的函数。此功能检查用户选择的区域是否在该餐厅的覆盖范围内。如果餐厅在保险范围内,则checkcoverage guest()将返回真值。当该餐厅没有保险范围时,checkCoverageGuest()将返回false 如果该值为真,则将进入下一个级别,即签出。如果该值为false,屏幕将显示toast错误消息,表明所选餐厅不在覆盖范围内 现在,此函数中的每个thischeckCoverageGuest()都显示为false 这是我
checkCoverageGuest()
的函数。此功能检查用户选择的区域是否在该餐厅的覆盖范围内。如果餐厅在保险范围内,则checkcoverage guest()
将返回真值。当该餐厅没有保险范围时,checkCoverageGuest()
将返回false
如果该值为真,则将进入下一个级别,即签出。如果该值为false,屏幕将显示toast错误消息,表明所选餐厅不在覆盖范围内
现在,此函数中的每个thischeckCoverageGuest()
都显示为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;
}
private boolean checkcoverage guest(){
试一试{
字符串url;
if(appPrefs.getLanguage().equalsIgnoreCase(“ar”))
url=LinksConstants.TEST\u服务器\u url
+LinksConstants.SEARCH\u覆盖区域;
其他的
url=LinksConstants.TEST\u服务器\u url
+LinksConstants.SEARCH\u覆盖区域;
Intent startingIntent=getIntent();
city_id=getIntent().getStringExtra(“id”);
RequestParams params=新的RequestParams();
参数put(“区域”,城市id);
NetworkRestClient.post(url、参数、新的JsonHttpResponseHandler(){
@凌驾
public void onStart(){
super.onStart();
progressActivity.showLoading();
}
@凌驾
成功时的公共void(int statusCode,Header[]headers,JSONObject响应){
super.onSuccess(状态码、头、响应);
progressActivity.showContent();
JSONObject[]餐厅\u arr=null;
hasCoverageGuest=true;
试一试{
if(响应!=null){
JSONArray restaurants=response.getJSONArray(“restaurants”);
//如果餐馆送货到那个地区
如果(!restaurants.getString(0).equals(“null”)){
restaurants_arr=新的JSONObject[restaurants.length()];
int具有_coverage=1;//假设存在coverage。。
对于(int j=0;j
您需要一个回调来指定成功或失败。一种方法是使用接口
public interface notifyGuestCoverage {
void hasCoverage(int status);
}
在成功中
if (!restaurants.getString(0).equals("null")) {
notifyGuestCoverageObj.hasCoverage(true);
}
该接口将由需要has coverage值的类实现。例如
class Example implements notifyGuestCoverage{
void hasCoverage(int status){
//your code
}
}
您的
private boolean checkCoverageGuest()
方法在执行public void onSuccess()
之前返回,这就是checkCoverageGuest()
始终返回false的原因
如果在获得
hasCoverageGuest
良好值后需要执行某些操作,则在onsuces()中执行该操作。
您的方法将返回变量的默认值,因为该值直到异步方法完成后才会更改。您需要从回调调用逻辑,或者使用另一个变量等待async方法完成。@MattClark如何实现这一点?你能帮忙吗?我对java还很陌生