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();
}