我想在单击片段内的按钮时将 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);
}
});
我不知道会是什么。我已经尝试了其他堆栈溢出页面所说的内容,但它们对我不起作用。
使用片段上下文来初始化 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);
}
});
更改
heart1 = (ImageView) v.findViewById(R.id.heart_1);
自
heart1 = (ImageView) findViewById(R.id.heart_1);
删除findViewById()
前面的"v"。当您这样做时,它会在v
中查找ImageView
,并且由于v
表示单击Button
,因此显然不会在Button
中找到ImageView
。
这是假设此代码在Activity
中。如果是,比如在Dialog
内,并且您充气了包含此ImageView
的不同layout
,那么您将在findViewById()
面前使用膨胀的layout
。
heart1 = (ImageView) this.findViewById(R.id.heart_1);
最好在oncreate中创建对象
heart1 = (ImageView) v.findViewById(R.id.heart_1);
然后在您的设置中点击列表列表
bcl.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
heart1.setVisibility(View.INVISIBLE);
}
});
尽量避免每次都创建对象