请考虑下面一段代码(顺便说一下,它工作得很好),它来自一个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集合:
<Button
        android:id="@+id/btnOK"
        android:onClick="btnOK_onClick"
        android:text="@string/ok" />

正如你所看到的,我必须跳出很多圈套才能让这个工作:
定义一个onClick变量,使finalthisOnClickListener中可用,
定义一个能够调用AlertDialog的额外方法。
就像我说的,它工作得很好,但看起来不漂亮。有更好的办法吗?

最佳答案

使用内部类中的classname.this。因此,如果类是MySuperClass,则可以从实例内部类引用MySuperClass.this
没有必要定义superClick,因为您可以随时调用super.btnOK_onClick(view);
总之,你应该能够做一些类似于MySuperClass.super.btnOK_onClick()

08-18 10:06