Java:如何重用侦听器

时间:2015-05-20 19:11:51

标签: java android listener

我想重用一个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;
}

不幸的是,这不起作用,但我希望它有助于理解我的问题。是否可以返回监听器的结果?怎么样?

由于

1 个答案:

答案 0 :(得分:2)

侦听器是一个回调函数。它将在稍后的某个时间点调用,可能在将来很远 - 甚至可能永远不会调用。所以不,它不能返回一个值,因为我们还不知道该返回什么。如果你想根据被调用的回调运行一些代码,你需要将这些代码放在回调中。