2017-10-21 36 views
-3

Je suis nouveau sur Android, et j'essaie de faire un seul bouton ouvert 2 activités, mais ne fonctionne pas pour moi. Ex: sur Mainacitivity, il y a btn_mathematics et btn_physics ouvrir la même activité (Main2acitivity) et trouver btn_semester1 et btn_semester2, chaque bouton ouvre 2 autres activités pour les modules semestre.Bouton avec si condition

Si l'utilisateur a cliqué sur le Mainacitivity: btn_mathematics --->btn_semester1 ---> aura ModulesMAT et si vous cliquez sur le même bouton btn_semester1: btn_physics --->btn_semester1 ---> aura ModulesPHY .

MainActivity XML:

<Button 
    android:id="@+id/btn_mathematics" 
    android:onClick="btn_mathematics" 
    android:text="@string/btn_mathematics/> 

<Button 
    android:id="@+id/btn_physics" 
    android:onClick="btn_physics" 
    android:text="@string/btn_physics"/> 

XML Main2Activity:

<Button 
    android:id="@+id/btn_semester1" 
    android:onClick="btn_semester1" 
    android:text="@string/btn_semester1"/> 

<Button 
    android:id="@+id/btn_semester2" 
    android:onClick="btn_s2" 
    android:text="@string/btn_semester2"/> 

Je suppose que pas besoin d'ajouter xml pour ModulesMAT et ModulesPHY, son assez similaire aux autres.

et maintenant le code java:

MainActivity.java:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    public void btn_mathematics (View v) { 
     Intent intent = new Intent(MainActivity.this, Main2Activity.class); 
     startActivity(intent); 
    } 

    `public void btn_physics (View v) { 
     Intent intent = new Intent(MainActivity.this, Main2Activity.class); 
     startActivity(intent); 
    } 


} 

Main2Activity.java:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 
} 



public void btn_semester1 (View v) 
{ 
    Intent i = getIntent(); 
    String id = i.getStringExtra("id"); 
    if(id == "btn_mathematics") 
    { 
     i = new Intent(this, ModulesMAT.class); 
     startActivity(i); 
    } 
    else if (id == "btn_physics") 
    { 
     i = new Intent(this, ModulesPHY.class); 
     startActivity(i); 
    } 

} 


public void btn_semester2 (View v) 
{ 
    Intent i = getIntent(); 
    String id = i.getStringExtra("id"); 
    if(id == "btn_mathematics") 
    { 
     i = new Intent(this, ModulesMAT2.class); 
     startActivity(i); 
    } 
    else if (id == "btn_physics") 
    { 
     i = new Intent(this, ModulesPHY2.class); 
     startActivity(i); 
    } 

} 
+0

Vous pouvez transmettre des données entre les activités à travers le 'Intent'. Voici un exemple https://stackoverflow.com/a/2091482/1552587 – Titus

+0

Merci pour le commentaire, puis-je avoir un exemple sur mon code? – itray

Répondre

1

En MainActivity vous pouvez passer l'id pour reconnaître en Main2Activity.
MainActivity

public void btn_mathematics (View v) { 
     Intent intent = new Intent(MainActivity.this, Main2Activity.class); 
     Bundle bundle = new Bundle(); 
     bundle.putString("id","Math"); 
     intent.putExtra(bundle); 
     startActivity(intent); 
    } 

public void btn_physics (View v) { 
    Intent intent = new Intent(MainActivity.this, Main2Activity.class); 
    Bundle bundle = new Bundle(); 
    bundle.putString("id","Physics"); 
    intent.putExtra(bundle); 
    startActivity(intent); 
} 

Main2Activity

String id; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 

    Bundle bundle = getIntent().getExtras(); 
    id= bundle.getString("id"); 
} 

public void btn_semester1 (View v) 
{ 
    if(id == "Math") 
    { 
     i = new Intent(this, ModulesMAT2.class); 
     startActivity(i); 
    } 
    else if (id == "Physics") 
    { 
     i = new Intent(this, ModulesPHY2.class); 
     startActivity(i); 
    } 

} 


public void btn_semester2 (View v) 
{ 
    if(id == "Math") 
    { 
     i = new Intent(this, ModulesMAT2.class); 
     startActivity(i); 
    } 
    else if (id == "Physics") 
    { 
     i = new Intent(this, ModulesPHY2.class); 
     startActivity(i); 
    } 

} 
+0

Vous devez utiliser '... equals (...)' pour comparer 'String's au lieu de' == ' – Titus

+0

Vous m'avez aidé homme, merci beaucoup, juste un petit problème sur ma deuxième activité, avec votre code: 'if (id ==" Math ") { i = nouvelle intention (this, ModulesMAT2.class); startActivity (i); } sinon if (id == "Physique") { i = nouvelle intention (this, ModulesPHY2.class); startActivity (i); }} ' j'ai (ne peut pas résoudre symbole 'i') – itray

+0

Il suffit d'ajouter intention avant chaque i. Comme: Intention i = nouvelle intention (ceci, ModulesMat2.class); –