博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中使用OnClickListener接口实现button点击的低级失误
阅读量:6918 次
发布时间:2019-06-27

本文共 2511 字,大约阅读时间需要 8 分钟。

       今天写了几行极为简单的代码,就是想implements  View.OnCLickListener.然后实现按钮点击操作。可是按钮却没有反应。找了五分钟还是没有结果。

下面是我的代码,希望大家不要嘲笑:

XML布局例如以下:

最初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;        }    }}
       可是按钮点击没有不论什么反应,经过检查后,发现是Button没有初始化,那好。如今初始化Button。改动代码例如以下:

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;        }    }}
       定义了Button而且findViewById()后。发现点击按钮还是没有不论什么反应。再次研究了五分钟,最终发现了问题关键。最后改动代码例如以下:

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. 对于这个相对照较简单的问题,自己也栽到坑里了。感觉很惭愧,所以在此警示。希望大家也不要犯低级失误。

你可能感兴趣的文章
品《阿里巴巴大数据实践-大数据之路》一书(下)
查看>>
4G促进智慧城市总体发展
查看>>
Newifi智能路由器谛听科技正式挂牌新三板
查看>>
联想、戴尔、惠普等笔记本预装膨胀件 存在安全隐患
查看>>
Rancher Labs发布开源跨云容器管理平台Rancher 1.0
查看>>
Zusy病毒爆发:不用点击 悬停PPT文件超链接上就能感染
查看>>
315曝光网络安全 安防智能硬件需格外注意
查看>>
2015年Facebook广告变现规模达10亿美金
查看>>
澳大利亚推出网安行业竞争力计划
查看>>
人类与机器人,如何能像朋友一样愉快聊天?
查看>>
2013云计算预测:攻击者馋涎云中数据
查看>>
中国最大漂浮式太阳能电站在安徽淮南落成
查看>>
关系数据库原理、数据模型
查看>>
日媒曝美的考虑收购东芝芯片业务,前者否认
查看>>
Win10杀毒软件大PK:Defender垫底 卡巴/小红伞第一
查看>>
WIFI性价比持续走高 或成物联网首选
查看>>
Linux后门入侵检测工具,附bash漏洞解决方法
查看>>
微软的这项新技术证明 深度学习还能更“深入”
查看>>
LoadRunner测试ajaxweb程序攻略
查看>>
咋办?运营商认为虚拟化难快速降低OPEX
查看>>