标签:android
今天写了几行极为简单的代码,就是想implements View.OnCLickListener.然后实现按钮点击操作。但是按钮却没有反应,找了五分钟还是没有结果。
以下是我的代码,希望大家不要嘲笑:
XML布局如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/id_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按钮" />
</RelativeLayout>
最初Java代码如下:
public class MainActivity extends Activity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.id_btn:
Toast.makeText(MainActivity.this, "被点击了", Toast.LENGTH_LONG).show();
break;
default:
break;
}
}
}public class MainActivity extends Activity implements View.OnClickListener {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.id_btn);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.id_btn:
Toast.makeText(MainActivity.this, "被点击了", Toast.LENGTH_LONG).show();
break;
default:
break;
}
}
}public class MainActivity extends Activity implements View.OnClickListener {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.id_btn);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.id_btn:
Toast.makeText(MainActivity.this, "被点击了", Toast.LENGTH_LONG).show();
break;
default:
break;
}
}
}
最后实现效果如下:
现在来总结一下,怎么会出现如此低级的错误。对于实现接口来点击按钮,并需加入一行代码就是:
button.setOnClickListener(this);
我来简单解释一下这个方法public void setOnClickListener(View.OnClickListener),官方的英文解释是“Register a callback to be invoked when this view is clicked.If this view is not clickable,it becomes clickable.”.翻译过来就是“当控件被点击的时候,这个已经注册的回调方法将会被调用(invoked).如果这个控件本来是不能被点击的,
那么现在就可以被点击。”
所以直观的理解就是为View设置一个监听器,监听这个View的操作。如果没有该方法,则点击操作不会响应对应的回调方法。参数使用this表示在该Activity中,在这里this==MainActivity.this.
对于这个相对比较简单的问题,自己也栽到坑里了,感觉非常羞愧,所以在此警示,希望大家也不要犯低级失误。
版权声明:本文为博主原创文章,未经博主允许不得转载。
Android中使用OnClickListener接口实现按钮点击的低级失误
标签:android
原文地址:http://blog.csdn.net/chenyufeng1991/article/details/46906509