Android 如何使应用程序等待输入
我正在尝试从另一个方法获取输入,然后使用该输入,但应用程序不会等待输入 我正在运行的代码是Android 如何使应用程序等待输入,android,dialog,wait,Android,Dialog,Wait,我正在尝试从另一个方法获取输入,然后使用该输入,但应用程序不会等待输入 我正在运行的代码是 case (R.id.menuSort): sSort = sortPopup(); layout.removeAllViews(); arrlst.clear(); checkLogs(); 其中,sortPopup是一个创建对话框并返回字符串的方法。单击按钮时,在从对话框中选
case (R.id.menuSort):
sSort = sortPopup();
layout.removeAllViews();
arrlst.clear();
checkLogs();
其中,sortPopup是一个创建对话框并返回字符串的方法。单击按钮时,在从对话框中选择选项之前,RemoveAllView、clear和checkLogs功能都会启动
我曾尝试使用wait和notify,但即使在阅读了几个关于类似问题的线程之后,如果程序没有崩溃,我也无法实现我的目标
在通过SortPoup方法获得结果之前,是否有方法防止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;
}
您可以通过以下方式更改代码:
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
}
这样代码就不需要任何等待…您可以按以下方式创建和显示对话框:
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();
不过,带有对话框的方法使用的是另一种方法。如何在另一种方法中使用onDismiss侦听器进行对话框?这取决于您如何创建对话框。。。添加sortPopUp代码,我可以看到我可以做什么;)在
onDismiss
方法中运行代码不是一个好主意,因为对话框不仅可以通过单击“确定”,还可以通过单击“取消”和在配置更改(例如屏幕方向)期间关闭。下面是我的答案。你是对的,但根据我看到的代码,我猜不出他有多少个按钮。。。这就是为什么我给出了onDismiss的想法,并要求提供更多的代码:/如果您的变量layout和arrlst在类中,您可以在函数onClick中调用它们。。。在函数onClick上执行所有代码时,不需要任何等待。