android中的XML布局声明探测

android中的XML布局声明探测,android,onclick,android-custom-view,Android,Onclick,Android Custom View,我有一个线性布局: <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageButton android:id="@+id/pronounce" style="@style/pronounce" android:onClick="pronounce_

我有一个
线性布局

<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
        <ImageButton android:id="@+id/pronounce"
                     style="@style/pronounce"
                     android:onClick="pronounce_onClick"/>
</LinearLayout>
发音\u onClick

    public void pronounce_onClick(View v) {
        pronounce();
    }
我了解到,
发音视图
中的
发音
方法不会被XML布局中的
android:onClick
声明调用,而是由
发音视图
中的
setOnClickListener
工作

此外,我还了解到,
android:onClick
声明可以触发
发音视图
com.company.sample.text
)包中的任何适当方法,但不能触发(例如:
com.company.sample.sound


我理解对了吗?任何人都可以告诉我这种探测机制或某种限制的原因?

这是因为
android:onClick
属性试图在视图的上下文上调用该方法,而不是在视图本身或其父对象上调用该方法-请检查


在您的情况下,最好在代码中为ImageButton设置
OnClickListener
,例如在
发音视图
构造函数中。它也更快,因为它不依赖于反射来调用该方法。

您的意思是说在单击按钮时没有调用您的发音onClick方法。请为它添加代码,以及如何声明发音视图。正如我所说,如果在xml布局中声明,则不会触发发音单击,但如果由setOnClickListener通过codeok定义,则可以工作。已使用xml布局中声明的函数。请添加关于布局如何通过发音视图膨胀的代码,以及您的发音单击方法的代码
    public void pronounce_onClick(View v) {
        pronounce();
    }