我想重用一个AlertBuilder,因此将它的创建放在一个自己的方法中。像这样:
private boolean askToDiscardChanges() {
final boolean result = false;
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
result = true;
break;
case DialogInterface.BUTTON_NEGATIVE:
result = false;
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(NewShootingActivity.this);
builder.setMessage(getResources().getString(R.string.msgDiscardChanges)).setPositiveButton(getResources().getString(R.string.lblYes), dialogClickListener)
.setNegativeButton(getResources().getString(R.string.lblNo), dialogClickListener).show();
return result;
}
不幸的是,这不起作用,但我希望它有助于理解我的问题。是否可以返回监听器的结果?怎么样?
由于
答案 0 :(得分:2)
侦听器是一个回调函数。它将在稍后的某个时间点调用,可能在将来很远 - 甚至可能永远不会调用。所以不,它不能返回一个值,因为我们还不知道该返回什么。如果你想根据被调用的回调运行一些代码,你需要将这些代码放在回调中。