设置监听器的问题

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);  

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

你可能感兴趣的:(设置监听器的问题)