我试图从另一个方法获取输入,然后使用该输入,但应用程序不等待输入。
我正在运行的代码是
case (R.id.menuSort):
sSort = sortPopup();
layout.removeAllViews();
arrlst.clear();
checkLogs();
其中sortPopup是一个创建对话框并返回字符串的方法。当我单击一个按钮时,removeAllViews,clear和checkLogs函数全部启动,然后从对话框中选择一个选项。
我试图使用wait和notify,但即使在阅读了几个有这个类似问题的线程后,如果没有程序崩溃,我也无法实现我的目标。
有没有办法阻止在从sortPopup方法获得结果之前启动3个函数?
onPopup代码如下
public String sortPopup() {
initializePopup(arrsSort);
new AlertDialog.Builder(this).setTitle("Select Sort")
.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
if (arrsSort[which] == "Ascending") {
sChoice = "ASC";
} else {
sChoice = "DESC";
}
}
}).create().show();
return sChoice;
}
答案 0 :(得分:0)
您可以通过以下方式更改代码:
public void sortPopup() {
initializePopup(arrsSort);
new AlertDialog.Builder(this).setTitle("Select Sort")
.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
if (arrsSort[which] == "Ascending") {
sChoice = "ASC";
} else {
sChoice = "DESC";
}
layout.removeAllViews();
arrlst.clear();
checkLogs();
}
}).create().show();
//You cant try call checkLogs() here
}
这样代码不需要等待......
答案 1 :(得分:0)
您可以通过以下方式创建和显示对话框:
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Call your methods that wait for dialog input.
}
});
AlertDialog dialog = builder.create();
dialog.show();