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);
这时点击就有用了。
因为这个我调试了一下午,还好被我找到了。血的教训。