Make randomly generated ImageButtons clickable

我怕爱的太早我们不能终老 提交于 2019-12-11 09:06:55

问题


I'm having trouble with making my randomly generated image, which is interpreted as a button, become clickable. Each leads to a different activity.

The random images work perfect actually, the only problem it's not clickable.

Here's my 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);
    }

}

On my layout, I specified the id top1 as a Button. So the above code will look up to my drawable images, which have the names img1.jpg, img2.jpg, img3.jpg , until img13.jpg.

Making an ImageButton clickable to one activity without being dependent on the shown random image is easy, I can do it without problem. But what I wanna make is something like, when img1.jpg is generated, it becomes clickable and leads to Activity1.java, for img2.jpg the intent goes to Activity2.java, etc.

EDIT @Roflcoptr Here's my 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);
             }
        }
       };

and here's the randomizer method:

 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:


I would use a tag to identify the button. So in your imateRandomizer add a unique ID for each possible Image. I don't know how you can identify the images uniquely, but I'll show the example here for the name:

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));
        }
    }

And then In your ClickListener you can check which tag the button has:

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;
                 }
             }
         });


来源:https://stackoverflow.com/questions/5535918/make-randomly-generated-imagebuttons-clickable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!