如何从onClickListeners调用成员函数

时间:2014-07-24 11:47:18

标签: java android

Activity

开始考虑以下代码(顺便说一下)
class ParentActivity extends Activity {
    ...       

    @Override
    public void btnOK_onClick(final View view) {
        // do stuff
    }

}

class ChildActivity extends ParentActivity {
    ...

    public void superClick(View view) {
        super.btnOK_onClick(view);
    }

    @Override
    public void btnOK_onClick(final View view) {
        final BarcodePickActivity me = this;
        if (confirmation_needed == true) {
            new AlertDialog.Builder(this)
            .setTitle(R.string.are_you_sure_)
            .setMessage(R.string.are_you_sure_you_want_to_continue)
            .setNegativeButton(R.string.no, null)
            .setPositiveButton(R.string.yes, new OnClickListener() {
                public void onClick(DialogInterface arg0, int arg1) {
                    me.superClick(view);
                }
            }).create().show();
        } else {
            super.btnOK_onClick(view);
        }
    }
}

在使用的布局中,Button设置了onClick

<Button
        android:id="@+id/btnOK"
        android:onClick="btnOK_onClick"
        android:text="@string/ok" />

如你所见,我必须通过一些箍来实现这个目标:

  1. 定义final变量,使this的{​​{1}}中有OnClickListener
  2. 定义一个额外的方法,以便能够调用AlertDialog
  3. 正如我所说,它运作良好,但它看起来并不漂亮。有没有办法做得更好?

1 个答案:

答案 0 :(得分:1)

使用内部类中的classname.this。因此,如果您的课程为MySuperClass,则可以从实例内部类引用MySuperClass.this

您无需定义superClick,因为您始终可以致电super.btnOK_onClick(view);

所有人都告诉你,你应该能够做MySuperClass.super.btnOK_onClick()

之类的事情