这是我的问题:
我添加了一个ImageView到线性布局。现在,我想为此图像视图设置一个OnClickListener。但是没有反应。因此,我认为将视图添加到布局时,侦听器迷路了。
这是我的代码:
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。我删除了所有不相关的代码,希望有人能帮助我;)
您有空指针异常,因为
您已将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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句