Android - установите случайное изображение кнопки нажатой - PullRequest
0 голосов
/ 14 марта 2011

Я пытаюсь сделать свое случайно сгенерированное изображение (которое читается как кнопка) кликабельным, что приводит к различным действиям для каждого отдельного изображения.Так что случайные изображения на самом деле работают идеально, единственная проблема, это не кликабельность. Вот мой код

        final Button imgView = (Button)findViewById(R.id.top1);
        Random rand = new Random();            
        int rndInt = rand.nextInt(4) + 1; 
        String imgName = "img" + rndInt;
        int id = getResources().getIdentifier(imgName, "drawable", getPackageName());  
        imgView.setBackgroundResource(id);

На моем макете я указал id top1 в качестве кнопки.Таким образом, приведенный выше код будет искать мои рисованные изображения с именами 'img1.jpg', 'img2.jpg', 'img3.jpg' и 'img4.jpg'.

Так что ячто-то вроде «хочу сделать», когда генерируется «img1.jpg», оно становится кликабельным и приводит, например, к Activity1.java, для «img2.jpg» намерение переходит к «Activity2.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_x);



            final Button imgView = (Button)findViewById(R.id.top1);
            Random rand = new Random();

            imgView.setOnClickListener(new ActivitySwitch(1,this));
            imgView.setOnClickListener(new ActivitySwitch(2,this));
            imgView.setOnClickListener(new ActivitySwitch(3,this));
            imgView.setOnClickListener(new ActivitySwitch(4,this));

            int rndInt = rand.nextInt(4) + 1; 
            String imgName = "img" + rndInt;
            int id = getResources().getIdentifier(imgName, "drawable", getPackageName());  
            imgView.setBackgroundResource(id);

        }

издесь класс ActivitySwitch:

public class ActivitySwitch implements OnClickListener{
    int imageNo;
    Context context;
    public ActivitySwitch(int imageNo,Context context) {
        super();
        this.context=context;
        this.imageNo = imageNo;
    }
    @Override
    public void onClick(View v) {
        Intent it=new Intent();
        if(imageNo==1)
        {
         it.setClass(context, ProjektAID.class);
        }
        else if (imageNo==2)
        {
         it.setClass(context, ProjektADH.class);
        }
        else if (imageNo==3)
        {
         it.setClass(context, ProjektBOS.class);
        }
        else if (imageNo==4)
        {
         it.setClass(context, ProjektBROT.class);
        }

    }

}

Ответы [ 2 ]

0 голосов
/ 14 марта 2011

Есть способ: создать новый класс

class ActivitySwitch implements OnClickListener{
    int imageNo;
    Activity context
    public ActivitySwitch(int imageNo,Context context) {
        super();
        this.context=(Activity)context;
        this.imageNo = imageNo;
    }
    @Override
    public void onClick(View v) {
        Intent it=new Intent();
        if(imageNo==1){
         it.setClass(context, Activity1.class);
            }
            else{
            .......
            }
            startActivityForResult(it,any_integer_value);




    }

}

А затем в наборе Activity:

imgView.setOnClickListener(new ActivitySwitcher(randInt,this);
0 голосов
/ 14 марта 2011

если это кнопка, просто реализуйте функцию onclicklistener кнопки и вызывайте соответствующую активность из текста, который она получает ... пингуйте меня, если вы не поняли ..

...