setOnClickListener 中的 ImageVIew 在设置 Visibility 时给了我一个 NullPo



我想在单击片段内的按钮时将 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);
}
});

尽量避免每次都创建对象

最新更新