我目前有一个应该返回对话框结果的方法。我正在使用的代码是
private int ShowDialog(String FileName)
{
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
// set title
alertDialogBuilder.setTitle("Play File");
// set dialog message
alertDialogBuilder
.setMessage("Would you like .... file")
.setCancelable(false)
.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id)
{
dialog.cancel();
return 1;
}
})
.setNegativeButton("No",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
dialog.cancel();
return 0;
}
});
AlertDialog alert11 = alertDialogBuilder.create();
alert11.show();
}
但似乎onClick方法应该是空的。无论如何,我可以使这个方法返回一个值,并返回导致ShowDialog方法返回该值。?
答案 0 :(得分:2)
尝试这样的事情
private int ShowDialog(String FileName)
{
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
// set title
alertDialogBuilder.setTitle("Play File");
// set dialog message
alertDialogBuilder
.setMessage("Would you like .... file")
.setCancelable(false)
.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id)
{
returnVal = 1; // Instead of directly returning - set it here
dialog.dismiss();
}
})
.setNegativeButton("No",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
returnVal = 0; // Instead of directly returning - set it here
dialog.dismiss();
}
});
AlertDialog alert11 = alertDialogBuilder.create();
alert11.show();
return returnVal; // return it here.
}
此处returnVal
是您的活动中的成员变量。
答案 1 :(得分:0)
你做不到。对话框是异步的,这意味着您的方法只能显示它,但只有用户按下按钮才会知道对话框的实际值。您需要更改代码才能适应这种情况。单击按钮后,您可以在容器类中调用另一个方法。
答案 2 :(得分:0)
系统在单独的线程上调用onClick()
上按钮的AlertDialog
方法。正如您所看到的方法的返回类型是void
,您不能返回任何值。
你可以做的是使用Handler
并在你的类上调用一个方法并传递你可能需要的任何值。