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上执行所有代码时,不需要任何等待。