Java 如何在android中从函数返回结果

Java 如何在android中从函数返回结果,java,android,Java,Android,我想将AlertDialog封装到一个函数中,这样我就可以使我的代码更具可读性和无混乱。但我无法使用此函数返回结果 public int ShowMessageBox(Context context, String title, String message){ int result; new AlertDialog.Builder(context) .setTitle(title.toString()) .setMessage

我想将AlertDialog封装到一个函数中,这样我就可以使我的代码更具可读性和无混乱。但我无法使用此函数返回结果

public int ShowMessageBox(Context context, String title, String  message){
     int result;
    new AlertDialog.Builder(context)
            .setTitle(title.toString())
            .setMessage(message.toString())
            .setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    result = 1; //error here
                    //dialogInterface.cancel();
                }
            })

            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    result = 2; //error here
                    //dialogInterface.dismiss();
                }
            })
            .show();
    return result;
}
如何返回结果,以便将此函数用作

int i = ShowMessageBox(MainActivity.this, "Title", "Message");
if (i == 1)
   do this
 else if (i == 2)
    do that

它是异步的,您应该保持这样。您可以创建一个
接口
,并将其传递到您的方法中。这将是您的界面:

public interface MessageBoxListener {
    void result(int result);
}
您的更新方法:

public void showMessageBox(Context context, String title, String  message, final MessageBoxListener listener) {
    new AlertDialog.Builder(context)
        .setTitle(title.toString())
        .setMessage(message.toString())
        .setCancelable(false)
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                listener.result(1);
                //dialogInterface.cancel();
            }
        })
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                listener.result(2);
                //dialogInterface.dismiss();
            }
        })
        .show();
}
要使用它,您可以执行以下操作:

showMessageBox(MainActivity.this, "Title", "Message", new MessageBoxListener() {
    @Override
    public void result(int result) {
        if (result == 1) 
            // Do something
        else
            // Do something else
    }
});

非常感谢。只做了一些小的改动,比如final messageboxListener和MainActivity.this,而不是this,效果很好。