设置Visibility时,setOnClickListener中的ImageVIew会给我一个NullPointerException

时间:2013-10-18 14:58:12

标签: android imageview

当我单击片段内的按钮时,我想将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页面所说的内容,但它们对我不起作用。

4 个答案:

答案 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);
}
});

尝试每次都避免创建对象