我有一个完全在java中创建的RelativeLayout,而不是使用xml布局。 如果我的屏幕左侧有几个按钮。我想单击一个按钮并在按钮旁边显示来 self 的 res/drawable 的默认图像,并使其在第二次单击时再次消失。 我尝试过切换可见性,但我的 onClick() 引发了致命异常,空指针异常。
这是我到目前为止的代码。当我手动设置 picview.setVisibility(View.INVISIBLE); 时,硬编码图像会正确显示。我在 onClick() 中做错了什么?
private ImageView picview;
//*snip* loads of other code
//Show Image Button
ImageButton show_pic = new ImageButton(this);
show_pic.setBackgroundColor(Color.WHITE);
show_pic.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
if(picview.getVisibility() == View.INVISIBLE)
{
picview.setVisibility(View.VISIBLE);
}
else if (picview.getVisibility() == View.VISIBLE)
{
picview.setVisibility(View.INVISIBLE);
}
}
});
params = new RelativeLayout.LayoutParams(40, 40);
params.topMargin = 10;
params.leftMargin = 10;
params.addRule(RelativeLayout.BELOW, button2_id);
rl.addView(show_pic, params);
//Imageview loaded from drawable
ImageView picview = new ImageView(this);
params = new RelativeLayout.LayoutParams(200, 400);
params.topMargin = 0;
params.leftMargin = 30;
params.addRule(RelativeLayout.RIGHT_OF, button2_id);
picview.setImageResource(R.drawable.my_image);
picview.setVisibility(View.INVISIBLE);
rl.addView(picview, params);
this.setContentView(rl);
最佳答案
您不小心创建了 picview
的两个副本。缩短此行:
ImageView picview = new ImageView(this);
致:
picview = new ImageView(this);
(您的字段变量 private ImageView picview;
从未从 null
更改,因此当您单击按钮时,您会看到 NullPointerException...)
关于java - 单击按钮时显示/隐藏 ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13336570/