Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从onClickListeners调用成员函数_Java_Android - Fatal编程技术网

Java 如何从onClickListeners调用成员函数

Java 如何从onClickListeners调用成员函数,java,android,Java,Android,考虑一下活动中的下面一段代码(顺便说一句,它工作得很好): class ParentActivity extends Activity { ... @Override public void btnOK_onClick(final View view) { // do stuff } } class ChildActivity extends ParentActivity { ... public void s

考虑一下
活动中的下面一段代码(顺便说一句,它工作得很好):

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);
        }
    }
}
在所使用的布局中,有一个
按钮
,带有
onClick
设置:

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

正如你所看到的,为了让这一切顺利进行,我必须克服很多困难:

  • 定义一个
    final
    变量,使该
    变量在
    AlertDialog
    OnClickListener
    中可用
  • 定义一个额外的方法,以便能够调用
    super.btnOk\u onClick

  • 正如我所说,它很好用,但看起来并不漂亮。有没有更好的方法呢?

    使用
    classname。这是内部类的
    。因此,如果您的类是
    MySuperClass
    ,那么您可以引用
    MySuperClass。这
    来自一个实例内部类

    没有理由需要定义
    superClick
    ,因为您总是可以调用
    super.btnOK_onClick(视图)


    总而言之,您应该能够执行类似于MySuperClass.super.btnOK_onClick()的操作。

    请发布完整的代码,因为这没有意义。@AdamArold我添加了一些代码,希望能让它更清楚。
    this.super
    不编译,但
    ChildActivity.super.btnOnClick()
    似乎有效您是否尝试从内部类调用
    super.btnOK\u onClick
    ?那可能行得通。如果没有,您仍然需要定义
    超级单击
    。无论哪种方式,你都可以摆脱
    me
    @MikeM。我不这么认为,因为我想在重写的方法中调用“base”方法。不使用super调用将导致堆栈溢出。@MikeM。Bart是对的,他正试图从重写方法调用重写方法。方法是使用
    super
    。我道歉。你说得对。我忘了你已经超越了
    btnOK\u onClick()
    。但是,正如我在回答中所说的,如果所做的工作不依赖于View参数,请将其放在它自己的方法中。