当我单击片段内的按钮时,我想将ImageView设置为不可见。
它给了我这个错误java.lang.NullPointerException
bcl.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
heart1 = (ImageView) v.findViewById(R.id.heart_1);
heart1.setVisibility(View.INVISIBLE);
}
});
我不知道它会是什么。我已经尝试过其他stackoverflow页面所说的内容,但它们对我不起作用。
答案 0 :(得分:2)
使用Fragment上下文初始化ImageView而不是v
:
bcl.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
heart1 = (ImageView) Your_Frg_Name.this.findViewById(R.id.heart_1);
heart1.setVisibility(View.INVISIBLE);
}
});
答案 1 :(得分:1)
更改
heart1 = (ImageView) v.findViewById(R.id.heart_1);
到
heart1 = (ImageView) findViewById(R.id.heart_1);
删除findViewById()
之前的“v”。执行此操作时,它会在v
中查找ImageView
,并且由于v
代表Button
点击它,显然无法找到ImageView
内的Button
Activity
。
这假设此代码位于Dialog
。如果是,例如在layout
内,并且您已经夸大了包含此ImageView
的其他layout
,那么您将在{{1}前面使用膨胀的findViewById()
}}
答案 2 :(得分:0)
heart1 =(ImageView)this.findViewById(R.id.heart_1);
答案 3 :(得分:0)
最好在oncreate中创建对象
heart1 =(ImageView)v.findViewById(R.id.heart_1);
然后在你的setclicklistlistner
中bcl.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
heart1.setVisibility(View.INVISIBLE);
}
});
尝试每次都避免创建对象