0

当我单击片段内的按钮时,我想将 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

4 回答 4

2

使用片段上下文来初始化 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);
    }
 });
于 2013-10-18T15:01:11.983 回答
1

改变

heart1 = (ImageView) v.findViewById(R.id.heart_1);

heart1 = (ImageView) findViewById(R.id.heart_1);

去掉前面的“v” findViewById()。当你这样做时,它正在寻找v并且ImageView因为v代表Button点击它显然不会ImageView找到Button.

这是假设此代码位于Activity. 如果是,比如说在 a 内部Dialog,并且你已经膨胀了一个layout包含这个的不同的东西,ImageView那么你将使用 inflatedlayout的前面findViewById()

于 2013-10-18T14:59:39.297 回答
0

heart1 = (ImageView) this.findViewById(R.id.heart_1);

于 2013-10-18T15:00:39.083 回答
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);
}
});

尽量避免每次都创建对象

于 2013-10-18T15:05:27.553 回答