[英]OnClicklistener on a added View in a Linearlayout
這是我的問題:
我添加了一個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。 我刪除了所有不相關的代碼,希望有人能幫助我;)
首先嘗試刪除條件檢查(v == a1),以查看事件是否被觸發。 在您的代碼中,您要靜態引用Row而不是實例的Row1 。 嘗試將視圖添加到Row1 。
在將ImageView添加到Layout之后設置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);
您有空指針異常,因為
您已將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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.