设置监听器的问题

来源:转载

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

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




分享给朋友:
您可能感兴趣的文章:
随机阅读: