java android在监听器中返回方法?

时间:2015-06-16 14:46:40

标签: java android

我是Java Android的新手,我遇到了这个问题,我不知道它叫什么,这是我的代码:

public boolean msgBox(String title, String text) {
    boolean bReturn = false;
    AlertDialog.Builder adb = new AlertDialog.Builder(this);

    adb.setCancelable(false);
    adb.setTitle(title);
    adb.setMessage(text);
    adb.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            //this suppose tell msgBox return true
        }
    });

    adb.setNegativeButton("Yes", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            //this suppose tell msgBox return false
        }
    });

    adb.show();

    return bReturn;
}

现在,当用户点击正/负按钮时,如何告诉msgBox返回true / false?

之前谢谢

2 个答案:

答案 0 :(得分:0)

这是不可能的,因为该方法将在对话框打开后结束。方法完成后,对话框将继续打开。

为了将信息返回给你的msgBox调用者,你需要提供一个回调函数。

您可以创建一个接口,将其传递给msgBox,然后在对话框按钮中调用它。

public interface OnDialogButtonClickedCallback {
    public void onDialogButtonClicked(boolean wasPositive);
}

像这样传递:

public boolean msgBox(String title, String text, final OnDialogButtonClickedCallback callback)

在按钮中使用它:

@Override
public void onClick(DialogInterface dialog, int which) {
    if(callback != null) {
        callback.onDialogButtonClicked(true);
    }
}

答案 1 :(得分:0)

    @Override
    public void onClick(DialogInterface dialog, int which) {
        if(which == 1) {
           bReturn = true or false;//yes or no
        }
        //this suppose tell msgBox return false
    }

在上面的函数中,您确定变量int单击了哪个按钮(f.e。:Yes是第一个,No是第二个)。

bReturn应该是全球性的。

由于您为每个按钮执行单独的侦听器,因此您甚至不必区分,因为这些是单独的侦听器。