如何让应用程序等待输入

时间:2013-05-24 09:05:51

标签: android dialog wait

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

我正在运行的代码是

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

2 个答案:

答案 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();