设置监听器的问题

1.include标签无法直接设置监听器
就是说通过findViewById()方法找到这个标签,然后给它设置监听器,不起作用

 LinearLayout l= (LinearLayout) activity.findViewById(R.id.include2)  
l.setOnClickListener(new View.OnClickListener() {  
       @Override  
       public void onClick(View v) {  
           Log.i("Logcat", "hahha");  
       }  
   });  

2.传入一个context,创建一个view,然后使用findViewById()方法找到对应的控件,然后设置监听,不起作用

 View v= LayoutInflater.from(context).inflate(R.layout.buttom_layout,null);    ImageView imageView= (ImageView) v.findViewById(R.id.buttom_ImageView);  
 imageView.setOnClickListener(new View.OnClickListener() {  
       @Override  
       public void onClick(View v) {  
           Log.i("Logcat", "hahha");  
       }  
   });  

猜测:
因为你新创建了一个view,所以你设置的监听是设置到了你新建的这张view上,而不是显示的view上,所以点击显示的view当然不起作用。要想让这个监听器起作用,应该将绑定监听器的view贴在视图上,也就是setContentView(参数);
测试:
在你的oncreate()方法加入如下代码:

    ViewGroup v= (ViewGroup) LayoutInflater.from(this).inflate(R.layout.buttom_layout,null);  
    //  ImageView imageView= (ImageView) l.findViewById(R.id.buttom_ImageView);  
    ImageView imageView= (ImageView) v.findViewById(R.id.buttom_ImageView);
    Log.i("Logcat", "" + imageView);  
    // Log.i("Logcat",""+l);  
    imageView.setOnClickListener(new View.OnClickListener() {  
        @Override  
        public void onClick(View v) {  
            Log.i("Logcat", "hahha");  
        }  
    });  
    setContentView(v);  

这时点击就有用了。
因为这个我调试了一下午,还好被我找到了。血的教训。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容