1

我正在尝试为我的应用程序菜单使用图片库。目标是当用户单击图像时,它会将您发送到特定活动。问题是我不知道如何将每个图像与每个活动相关联。例如,如果您单击第一个图像,它会打开一个游戏,如果您单击第二个图像,您会转到应用程序选项... 我该怎么做?

public class Carrusel extends Activity implements OnClickListener {

ImageView lastClicked = null;
int padding = 10;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start);
LinearLayout l;
l = (LinearLayout) findViewById(R.id.carrusel);
int[] images = new int[] { R.drawable.image1, R.drawable.image2,
        R.drawable.image3,R.drawable.image4,R.drawable.image5};
for (int i = 0; i <5; i++) {
    ImageView iv = new ImageView(this);
    iv.setImageResource(images[i]);
    iv.setPadding(padding, padding, padding, padding);
    iv.setOnClickListener(this);
    l.addView(iv);
}
}

@Override
public void onClick(View v) {
    Intent i= new Intent (this, Flip3d.class);
    startActivity (i);

}
}

最后一个“onClick”是对我正在尝试的测试。显然在这种情况下,所有图像都打开相同的活动,这就是我想要改变的。

4

2 回答 2

1

在 OnClickListener 上为您的每个 ImageView 创建。

iv.setOnClickListener (new OnClickListener() {
   @Override
   OnClick(View v) {
     // start the activity you want
   }
});
于 2013-08-31T17:42:57.203 回答
0

您可以为您的图像视图设置 ID,该 ID 可在 onClick 中用于识别您的视图。

protected void onCreate(Bundle savedInstanceState) {
    // ...
    for (int i = 0; i <5; i++) {
        ImageView iv = new ImageView(this);
        iv.setImageResource(images[i]);
        iv.setPadding(padding, padding, padding, padding);
        iv.setOnClickListener(this);
        iv.setId(mIvIds[i]);
        l.addView(iv);
    }
}

public void onClick(View v) {
    if (v.getId() == mIvIds[0]) {
        Intent i= new Intent (this, Flip3d.class);
        startActivity (i);
    } else if (v.getId() == mIvIds[1]) {
    // other stuff
    } else if (v.getId() == mIvIds[2]) {
    // ...
    }

}

但首先您需要为mIvIds[]. 在 API17 中,为此功能添加了 View.generateViewId()。但是,如果仅将您的图像视图附加到该 onclick 侦听器,我认为如果您使用一些随机整数(例如 1,2,3,...)应该没有问题

于 2013-08-31T17:58:54.940 回答