私は、forループ内に一連のイメージボタンをプログラム的に定義しました。各ボタンについて、私はその意図にいくつかのデータを入れてから活動を切り替えるsetOnClickListener関数を定義しました。しかし、どのボタンをクリックしても、検索される余分なデータはループのために最後の値int intに設定されているようです。以下のコードを参照してください:プログラムで作成されたImageButtonで定義されたputExtraデータは最後の値のみを表示しますか?
public void onCreate(Bundle savedInstanceState) {
<...>
RelativeLayout rl = (RelativeLayout) findViewById(R.id.rlayout);
for (int i=1; i<=maxMapLoc; i++) {
mapLocation = i;
ImageButton btnMapLoc = new ImageButton(FirstActivity.this);
RelativeLayout.LayoutParams vp = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
btnMapLoc.setLayoutParams(vp);
btnMapLoc.setBackgroundColor(Color.TRANSPARENT);
btnMapLoc.requestLayout();
String imgName = "map_loc_" + mapLocation;
int id = getResources().getIdentifier(imgName,"drawable",getPackageName());
btnMapLoc.setImageResource(id);
int imgMapLoc = 2000 + mapLocation;
btnMapLoc.setId(imgMapLoc);
rl.addView(btnMapLoc, vp);
btnMapLoc.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("MapLocation", mapLocation);
startActivity(intent);
}
});
私は間違っていましたか?
ありがとうございました。
onClickメソッドでボタンのIDを印刷して、クリックしたボタンが実際にトリガーされるボタンであることを確認することができます。したがって、最初のボタンはIDが '2001'で、2番目のボタンのIDは '2002'でなければなりません。おかげさまで – Gophermofur