这是我的问题:
我将ImageView添加到线性布局。现在我想为这个ImageView设置一个OnClickListener。但是没有反应。所以我认为当View添加到Layout时,Listener会丢失。
这是我的代码:
public class MainActivity extends Activity implements OnClickListener{
ImageView a1,a2;
LinearLayout Row1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(50, 50);
LinearLayout Row1 = (LinearLayout)findViewById(R.id.Row1);
ImageView a1 = new ImageView(this);
ImageView a2 = new ImageView(this);
a1.setImageResource(R.drawable.yellow);
a2.setImageResource(R.drawable.yellow);
a1.setOnClickListener(this);
a2.setOnClickListener(this);
Row1.addView(a1, params);
Row1.addView(a2, params);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId() == a1.getId()){
Status.setText("A1 clicked");
}
if (v.getId() == a2.getId()){
Status.setText("A2 clicked");
}
}
}
现在,当我点击a1时,我得到一个NullPointerException。 我删除了所有不相关的代码,我希望有人可以帮助我;)
答案 0 :(得分:0)
首先尝试删除条件检查(v == a1)以查看该事件是否正在被触发。在您的代码中,您对实例的行而不是 Row1 进行静态引用。尝试将视图添加到 Row1 。
答案 1 :(得分:0)
将ImageView添加到Layout.Like:
后设置onClickListener()ImageView a1 = new ImageView(this);
ImageView a2 = new ImageView(this);
a1.setImageResource(R.drawable.yellow);
a2.setImageResource(R.drawable.yellow);
Row1.addView(a1, params);
Row1.addView(a2, params);
a1.setOnClickListener(this);
a2.setOnClickListener(this);
答案 2 :(得分:0)
你有 空指针异常 ,因为
您已将 LinearLayout 声明为
LinearLayout Row1;
然后在oncreate()方法上再次通过
声明它LinearLayout Row1 = (LinearLayout)findViewById(R.id.Row1);
所以在这方面会有冲突
Row1.addView(a1, params);
Row1.addView(a2, params);
所以只需从
更改此内容即可LinearLayout Row1 = (LinearLayout)findViewById(R.id.Row1);
到
Row1 = (LinearLayout)findViewById(R.id.Row1);
还有这个
Row1.addView(a1, params);
Row1.addView(a2, params);
a1.setOnClickListener(this);
a2.setOnClickListener(this);