我猜这只是我做一些有点愚蠢的事情。我的布局文件中有一堆TextViews,我用它来创建一个数字键盘。他们是0-9这样:
<TextView android:id="@+id/pad_number_7" android:text="@string/pad_number_text_7" style="@style/pad_button" />
pad_button样式包括:
<item name="android:clickable">true</item>
然后在我的ControlExtension类'构造函数中,我调用一个名为wireUpButtons()的方法,其代码如下:
mLayout = parseLayout(((LayoutInflater)mContext.getSystemService("layout_inflater")).inflate(R.layout.pad_layout, null));
if (mLayout != null)
{
Log.d("DK", "Adding event for button 7");
ControlView controlview = mLayout.findViewById(R.id.pad_number_7);
controlview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(){
Log.d("DK", "Button 7 clicked");
sendResult("7");
}
});
}
我的onResume显示了布局:
@Override
public void onResume() {
showLayout(R.layout.pad_layout, null);
}
但是永远不会创建日志条目,也不会调用sendResult。有谁知道为什么我的点击事件没有解雇?连接事件的调用确实发生了,因为显示了日志第一个日志条目,并且我已经尝试将对wireUpButtons()的调用移动到onResume函数(在showLayout调用之前和之后),没有任何更改。
答案 0 :(得分:1)
好的,我意识到我缺少onObjectClick方法将click事件传递给处理程序:
@Override
public void onObjectClick(final ControlObjectClickEvent event) {
if (event.getLayoutReference() != -1) {
mLayout.onClick(event.getLayoutReference());
}
}
添加此方法后,一切正常