2011-11-22 2 views
0

J'ai deux boutons dans une classe et ces boutons vous envoient à la même classe, mais selon le bouton sur lequel il a été pressé, il affichera différents textes/images/boutons.Charger l'ensemble en fonction du bouton pressé

Donc maintenant quand un bouton est pressé, il vous envoie à la classe et ajoute quelques intets, comme ceci:

button1.setOnClickListener(new View.OnClickListener() { 
      @Override 
       public void onClick(View view) { 
       Bundle bundle1 = new Bundle(); 
       bundle1.putInt("top", R.drawable.1); 
       bundle1.putInt("mid", R.drawable.2); 
       bundle1.putInt("bot", R.drawable.3); 
       Intent intet1 = new Intent(curclass.this, nextclass.class); 
       intent1.putExtras(bundle1); 
       startActivity(intent1); 

Dans la classe suivante, j'ai un paquet pour chaque bouton, mais je belive j'ai besoin pour définir un if/else sur eux pour s'assurer qu'il n'utilise que l'un des bundles, car il ne fonctionne pas correctement en ce moment.

Alors, comment faire le "si" chose? J'ai essayé mais je ne sais pas quoi mettre après "si". Quelque chose comme

"if (button1 = pressed) 
(do this) 
else if (button2 = pressed) 
(do this)" 

Merci à l'avance! Désolé si j'explique comme un idoit, peut-être parce que je suis un et je viens de commencer à programmer.

EDIT: Le problème est que j'ai deux faisceaux dans la deuxième activité qui ressemble à ceci:

Bundle asd = getIntent().getExtras(); 
    int asdasd = asd.getInt("top"); 
    im1 = (ImageView) findViewById(R.id.imagetop); 
    im1.setImageResource(newimage); 
    bu1 = (Button) findViewById(R.id.buttontop); 
    bu1.setText("blahblah"); 

Et je le milieu et bot un sous qui puis-je avoir le deuxième paquet qui indique la Ints from button2 ce que les images/textes à montrer et le problème est qu'il charge ces trucs deuxième bundles même si j'appuie sur button1, que je soupçonne est causé par les faisceaux juste là côte à côte avec quelque chose leur disant quoi faire.

J'espère que vers le haut :) efface

+0

Seul le paquet que vous avez passé dans l'intention via setExtras sera visible i n votre deuxième activité. Pouvez-vous élaborer sur ce qui ne fonctionne pas correctement et peut-être poster un code pertinent de la deuxième activité? – Chris

+0

J'ai édité OP avec un peu plus d'infos :) – Edalol

+0

Vous dites "Le problème est que j'ai deux paquets dans la deuxième activité qui ressemble à ceci:" ... mais je ne vois qu'un seul paquet. Pouvez-vous montrer l'autre code de bundle? – Jack

Répondre

1

La bonne chose obtenir ... méthode de faisceaux il que vous pouvez définir une valeur par défaut. Mettez ceci où vous voulez, peut-être vous avez une classe pour les constantes, ou où vous feriez mieux de le remplir pour rester. Comme il est statique, vous pouvez y accéder où vous voulez. Créez des "variables globales" pour identifier vos boutons de manière unique.

public static final int no_button = -1; 
public static final int button_1 = 1; 
public static final int button_2 = 2; //you are not forced to use -1, 1, 2, just use different numbers 

Toujours dans votre première activité, après pression sur la touche

button1.setOnClickListener(new View.OnClickListener() { 
      @Override 
       public void onClick(View view) { 
       Bundle bundle1 = new Bundle(); 
       bundle1.putInt("button id", button_1); 
       bundle1.putInt("top", R.drawable.1); 
       bundle1.putInt("mid", R.drawable.2); 
       bundle1.putInt("bot", R.drawable.3); 
       Intent intet1 = new Intent(curclass.this, nextclass.class); 
       intent1.putExtras(bundle1); 
       startActivity(intent1); 

ou

button2.setOnClickListener(new View.OnClickListener() { 
      @Override 
       public void onClick(View view) { 
       Bundle bundle2 = new Bundle(); 
       bundle2.putInt("button id", button_2); 
       bundle2.putInt("top", R.drawable.1); 
       bundle2.putInt("mid", R.drawable.2); 
       bundle2.putInt("bot", R.drawable.3); 
       Intent intet2 = new Intent(curclass.this, nextclass.class); 
       intent2.putExtras(bundle1); 
       startActivity(intent1); 

Puis, dans la deuxième activité

Bundle asd = getIntent().getExtras(); 
switch(asd.getInt("button id", -1)){ 
case button_1: 
    [put here the code you want to execute if button1 was pressed] 
case button_2: 
    [put here the code you want to execute if button2 was pressed] 
case no_button: 
    [put here the code you want to execute if something else happened] 
} 
+0

Merci pour votre réponse! Cependant, cette partie que je n'ai pas comprise: "bundle.setInt (" bouton id "le putton pressé id);" Où cela se passe-t-il et que signifie-t-il? – Edalol

+0

@ user1050429 J'ai étendu la réponse. Si vous le trouvez utile, veuillez l'accepter –

+0

Vous êtes un dieu parmi les hommes! Ce site est génial! – Edalol

Questions connexes