2011-04-04 90 views
1

我將我的隨機生成的圖像解釋爲按鈕變得可點擊時遇到問題。每個導致不同的活動。使隨機生成的ImageButtons可點擊

隨機圖像實際上是完美的,唯一的問題是它不可點擊。

這裏是我的Main.java:

public class Main extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     final List<String> images = new ArrayList<String>(); 
     for (int i=1; i<=13; i++) { 
      images.add("img"+i); 
     } 
     final Button imgView = (Button)findViewById(R.id.top1); 
     String imgName = null; 
     int id = 0; 

     Collections.shuffle(images, new Random()); 
     imgName = images.remove(0); 
     imageRandomizer(imgName, id, imgView); 
    } 

    public void imageRandomizer(String imgName, int id, final Button imgView) { 
     id = getResources().getIdentifier(imgName, 
              "drawable", 
              getPackageName()); 
     imgView.setBackgroundResource(id); 
    } 

} 

在我的佈局,我指定的ID top1作爲Button。所以上面的代碼將查找到我的繪製圖像,其中有名稱img1.jpgimg2.jpgimg3.jpg,直到img13.jpg

製作一個ImageButton點擊一個活動,而不依賴於所顯示的隨機圖像很容易,我可以做到沒有問題。 但我想提出的是類似的東西,在生成img1.jpg,就變成可點擊的,並導致Activity1.java,爲img2.jpg意圖去Activity2.java

編輯 @Roflcoptr 這裏是我的OnClickListener:

private OnClickListener top_listener = new OnClickListener() { 
     public void onClick(View v) { 
      switch((Integer) v.getTag()) { 

      case 1: 
      Intent aid = new Intent(Main.this, ProjektAID.class); 
      startActivity(aid); 

      case 2: 
      Intent adh = new Intent(Main.this, ProjektADH.class); 
      startActivity(adh); 

      case 3: 
       Intent bos = new Intent(Main.this, ProjektBOS.class); 
       startActivity(bos); 

      case 4: 
       Intent brot = new Intent(Main.this, ProjektBROT.class); 
       startActivity(brot); 

      case 5: 
       Intent care = new Intent(Main.this, ProjektCARE.class); 
       startActivity(care); 

      case 6: 
       Intent caritas = new Intent(Main.this, ProjektCARITAS.class); 
       startActivity(caritas); 

      case 7: 
       Intent doc = new Intent(Main.this, ProjektDOC.class); 
       startActivity(doc); 

      case 8: 
       Intent drk = new Intent(Main.this, ProjektDRK.class); 
       startActivity(drk); 

      case 9: 
       Intent give = new Intent(Main.this, ProjektGIVE.class); 
       startActivity(give); 

      case 10: 
       Intent hive = new Intent(Main.this, ProjektHIV.class); 
       startActivity(hive); 

      case 11: 
       Intent jo = new Intent(Main.this, ProjektJOHANNITER.class); 
       startActivity(jo); 

      case 12: 
       Intent kind = new Intent(Main.this, ProjektKINDERHERZ.class); 
       startActivity(kind); 

      case 13: 
       Intent kult = new Intent(Main.this, ProjektKULTURGUT.class); 
       startActivity(kult); 
      } 
     } 
     }; 

,這裏是隨機數發生器方法:

public void imageRandomizer(String imgName, int id, final Button imgView) { 
    id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
    imgView.setBackgroundResource(id); 
    imgView.setTag(new Integer(1)); //example for image 1 
    if (imgName.equals("img1")) { 
     imgView.setTag(new Integer(1)); //example for image 1 
    } else if (imgName.equals("img2")) { 
     imgView.setTag(new Integer(2)); 
    } else if (imgName.equals("img3")) { 
     imgView.setTag(new Integer(3)); 
    } else if (imgName.equals("img4")) { 
     imgView.setTag(new Integer(4)); 
    } else if (imgName.equals("img5")) { 
     imgView.setTag(new Integer(5)); 
    } else if (imgName.equals("img6")) { 
     imgView.setTag(new Integer(6)); 
    } else if (imgName.equals("img7")) { 
     imgView.setTag(new Integer(7)); 
    } else if (imgName.equals("img8")) { 
     imgView.setTag(new Integer(8)); 
    } else if (imgName.equals("img9")) { 
     imgView.setTag(new Integer(9)); 
    } else if (imgName.equals("img10")) { 
     imgView.setTag(new Integer(10)); 
    } else if (imgName.equals("img11")) { 
     imgView.setTag(new Integer(11)); 
    } else if (imgName.equals("img12")) { 
     imgView.setTag(new Integer(12)); 
    } 
    else if (imgName.equals("img13")) { 
     imgView.setTag(new Integer(13)); 
    } 
} 
+1

你缺少switch/case結構中的'break'語句。 – 2011-04-04 10:05:38

+0

非常感謝您的提醒。我的壞 – hectichavana 2011-04-04 11:23:16

回答

1

我會使用標籤來標識按鈕。因此,在您的imateRandomizer中爲每個可能的圖像添加一個唯一的ID。我不知道你怎麼能唯一標識的圖像,但我會在這裏顯示的例子的名字:

public void imageRandomizer(String imgName, int id, final Button imgView) 
    { 
     id = getResources().getIdentifier(imgName, "drawable", getPackageName()); 
     imgView.setBackgroundResource(id); 

     if (imgName.equals("Name of the Image for your first activity") { 
      imgView.setTag(new Integer(1)); //example for image 1 
     } else if (imgName.equals("Name of the Image for your second activity") { 
      imgView.setTag(new Integer(2)); 
     } 
    } 

,然後在你的ClickListener您可以檢查該按鈕具有標籤:

imgView.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       switch((Integer) v.getTag()) { 

         case 1: //start Activity 1; 

         break; 

         case 2: //start Activity 2; 

         break; 
       } 
      } 
     }); 
+0

這並沒有幫助,只有情況13被讀取。 13是隨機圖像收集的總量 – hectichavana 2011-04-04 08:34:30

+0

您能展示如何設置和閱讀標籤嗎? – 2011-04-04 08:35:51

+0

我編輯了我的問題,你可以查看它 – hectichavana 2011-04-04 08:53:34