单击Android中的监听器按钮不起作用

IPV*_*rde 2 user-interface android onclick button listener

我的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!");
        }
    });
Run Code Online (Sandbox Code Playgroud)

这就是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"
            />
Run Code Online (Sandbox Code Playgroud)

信息

  • 此活动中还有一个ImageButton,这个imageButton与内部OnClickListener类完美配合(就像这个一样).
  • 我已经尝试使我的活动类继承OnClickListener并将其设置为按钮的单击侦听器但没有成功.
  • 我还在Activity类中创建了一个类,并将其设置为按钮单击侦听器,也没有成功.

我正在为Android 2.1 + Google API编译(SDK 7)

------------ EDITED -----------------

如果我输入我的代码:

btnNext.performClick();
Run Code Online (Sandbox Code Playgroud)

它被执行了!我现在变得非常疯狂!实际上,当我触摸按钮时,按钮被点击,我可以看到按钮"动画",然后在LogCat中记录点击.

use*_*351 8

listclient指定或使用id时无法使用.第一部分是资源的类型,必须id在您的情况下.

更改android:id="@+listclient/btnnext"到android:id="@+id/btnnext".还要调整你的代码:

btnNext = (Button) findViewById(R.id.btnnext);
Run Code Online (Sandbox Code Playgroud)

  • 两个解决方案:a)以不同的方式为它们添加前缀,例如`android:id ="@ + id/listclient_btnnext"`(然后在代码中使用`R.id.listclient_bttnnext`).或b)不关心并重复使用它们.`findViewById()`只搜索当前视图层次结构(=可见布局).所以如果你有3个不同布局的3个活动,那没关系.它将找到与活动布局相关的一个.(这就是为什么`findViewById()`总是返回`null`如果你在`setContentView()`之前调用它..还没有视图层次结构) (2认同)