Java 如何在android中从函数返回结果
我想将AlertDialog封装到一个函数中,这样我就可以使我的代码更具可读性和无混乱。但我无法使用此函数返回结果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
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,效果很好。