我在检查一些函数返回值后尝试显示alertdialog。但是alertdialog代码总是在其他函数返回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();
}
,功能是:
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之前等待执行功能。感谢
答案 0 :(得分:0)
嗯,我对异步调用和回调并不多,我会学习它,但到目前为止我在其他地方调用了函数。
就像我放置
isServiceComplete()
方法中的 OnCreate
并将if
条件更改为
if(!serviceComplete){...}
现在工作正常