代码在获取 return 值之前执行
code executes before getting return value
我正在尝试在检查某些函数 return 值后显示警报对话框。但是 alertdialog 代码总是在其他函数 return true 之前执行。在调试时它运行完美。
if(!isServiceComplete()){
AlertDialog.Builder builder = new AlertDialog.Builder(HomeActivity.this);
builder.setMessage("Complete Service");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
Intent positiveActivity = new Intent(getApplicationContext(),
ServiceActivity.class);
startActivity(positiveActivity);
}
});
builder.show();
}
and the function is:
public boolean isServiceComplete() {
serviceComplete = false;
try {
OneSignal.getTags(new OneSignal.GetTagsHandler() {
@Override
public void tagsAvailable(final JSONObject tags) {
if (tags.has("status")) {
serviceComplete = true;
} else {
serviceComplete = false;
}
}
});
} catch(Exception e) {
e.printStackTrace();
}
return serviceComplete;
}
请告诉我如何在 alertdialog 之前等待功能的执行。谢谢
好吧,我不太喜欢异步调用和回调,我会学习它,但截至目前,我在 activity 的其他地方调用了函数。
就像我放置的那样
isServiceComplete()
在 OnCreate
方法中并将 if
条件更改为
if(!serviceComplete){...}
现在工作正常
我正在尝试在检查某些函数 return 值后显示警报对话框。但是 alertdialog 代码总是在其他函数 return true 之前执行。在调试时它运行完美。
if(!isServiceComplete()){
AlertDialog.Builder builder = new AlertDialog.Builder(HomeActivity.this);
builder.setMessage("Complete Service");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
Intent positiveActivity = new Intent(getApplicationContext(),
ServiceActivity.class);
startActivity(positiveActivity);
}
});
builder.show();
}
and the function is:
public boolean isServiceComplete() {
serviceComplete = false;
try {
OneSignal.getTags(new OneSignal.GetTagsHandler() {
@Override
public void tagsAvailable(final JSONObject tags) {
if (tags.has("status")) {
serviceComplete = true;
} else {
serviceComplete = false;
}
}
});
} catch(Exception e) {
e.printStackTrace();
}
return serviceComplete;
}
请告诉我如何在 alertdialog 之前等待功能的执行。谢谢
好吧,我不太喜欢异步调用和回调,我会学习它,但截至目前,我在 activity 的其他地方调用了函数。
就像我放置的那样
isServiceComplete()
在 OnCreate
方法中并将 if
条件更改为
if(!serviceComplete){...}
现在工作正常