我与我的android点击监听按钮一些非常奇怪的麻烦!我已经做了好几次了,我疯了,没有为这个错误找到一个解决方案(既不是合理的解释)。单击安卓按钮听众按钮不工作
错误 我的活动上的2个按钮的事件处理程序没有被执行。没有错误,它只是没有在运行时执行处理程序动作。这是一个按钮的代码:
btnNext = (Button) findViewById(R.listclient.btnnext);
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(MyActivityClassName.this, "Flag 01", 1).show();
btnNext.setText("CLICKED!");
}
});
这就是XML的布局按钮:
<Button android:id="@+listclient/btnnext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true"
style="@style/Widget.TextViewInfo"
android:text="Next"
/>
信息
- 也有这个活动里面的ImageButton的,这imageButton完美地与一个内部的OnClickListener类(就像这个一样)。
- 我已经试图让我的活动类继承OnClickListener,并将它设置为按钮的点击侦听器,但没有成功。
- 我也在我的Activity类中创建了一个类,并将其设置为按钮点击侦听器,但也没有成功。
我编译为Android 2.1 +谷歌API(SDK 7)
------------ EDITED ------------- ----
如果我把我的代码:
btnNext.performClick();
它的执行!我现在变得更疯狂了! 当我触摸它时,实际上点击了按钮,我可以看到按钮“动画”,并且点击被记录在LogCat中。
我的应用程序真的很大(大约50项活动),在很多情况下,我们在不同的活动中使用相同的按钮名称。为了防止使用“id /”实现大量的小部件引用,我们使用布局的名称来分隔小部件。例如,我在其他2个布局中有一个“btnext”。 但我试过你的建议,它仍然无法正常工作。 – IPValverde 2012-01-16 15:58:49
两种解决方案:a)以不同的方式加前缀,比如'android:id =“@ + id/listclient_btnnext”'(然后在代码中使用'R.id.listclient_bttnnext')。或者b)不关心和重复使用它们。 'findViewById()'只在当前视图层次(=可见布局)中搜索。因此,如果您有3种不同布局的活动,则无关紧要。它会找到与活动布局相关的一个。 (这就是为什么''findViewById()''总是返回'null',如果你在'setContentView()'之前调用它,那么没有视图层次结构) – user287351 2012-01-16 16:01:17
嗯......+1 我不知道!我认为使用“id /”更好。 但不幸的是,它不是问题,因为更改引用并没有使clickEvent被调用。 – IPValverde 2012-01-16 16:06:27