2013-08-31 40 views
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」是我正在嘗試的測試。很明顯,在這種情況下,所有圖像都會打開同一個活動,這就是我想要改變的。

回答

1

在OnClickListener上爲每個ImageView創建。

iv.setOnClickListener (new OnClickListener() { 
    @Override 
    OnClick(View v) { 
    // start the activity you want 
    } 
}); 
+0

我不知道我該如何實現這個解決方案在我的代碼中。我已經嘗試過,但它給了我錯誤。你可以幫幫我嗎? – Fernandez6

0

您可以設置您的圖像視圖的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[]生成新的ID。在API17中添加了View.generateViewId()用於此功能。但如果只有你的圖像瀏覽器被附加到那個onclick監聽器上,我認爲如果你使用一些隨機整數(例如1,2,3,...),那麼應該沒有問題