0

我试图从另一种方法获取输入,然后使用该输入,但应用程序不等待输入。

我正在运行的代码是

case (R.id.menuSort):
         sSort = sortPopup();
         layout.removeAllViews();                           
         arrlst.clear();
         checkLogs();

其中 sortPopup 是一种创建对话框并返回字符串的方法。当我单击一个按钮时,removeAllViews、clear 和 checkLogs 函数都会在我从对话框中选择一个选项之前启动。

我曾尝试使用等待和通知,但即使在阅读了具有类似问题的多个线程之后,我也无法在程序不崩溃的情况下实现我的目标。

有没有办法阻止 3 个函数在 sortPopup 方法获得结果之前启动?

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;
}
4

2 回答 2

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
}

这样代码不需要任何等待......

于 2013-05-24T09:13:53.123 回答
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();
于 2013-05-24T12:16:28.987 回答