2014-05-09 1 views
0

J'ai une application qui prend en charge différentes langues. Cependant, j'ai 1 fichier de mise en page que je veux utiliser, peu importe la langue.
Cette mise en page comporte deux boutons qui ouvrent différentes activités, mais il doit être dans l'ordre alphabétique.
, c'est-à-dire Car (eng) - Auto (de) Version française Le bouton 3 ouvre l'activité de la voiture, mais le bouton 1 de la version allemande ouvre l'activité de la voiture. Comment puis-je m'assurer que cela se produise, ou dois-je créer différentes activités en fonction de la langue?
Mise en page Fichier:Ouvrir l'activité en fonction de la langue

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="72dp" 
     android:orientation="horizontal" > 


    <Button 
     android:id="@+id/btnButton1" 
     android:layout_width="72dp" 
     android:layout_height="72dp" 
     android:layout_marginTop="20dp" 
     android:layout_marginLeft="25dp" 
     android:text="1" /> 

    <Button 
     android:id="@+id/btnButton2" 
     android:layout_width="72dp" 
     android:layout_height="72dp" 
     android:layout_toRightOf="@+id/btnButton1" 
     android:layout_alignBottom="@+id/btnButton1" 
     android:layout_marginLeft="5dp" 
     android:text="2"/> 

    <Button 
     android:id="@+id/btnButton3" 
     android:layout_width="72dp" 
     android:layout_height="72dp" 
     android:layout_toRightOf="@+id/btnButton2" 
     android:layout_alignBottom="@+id/btnButton2" 
     android:layout_marginLeft="5dp" 
     android:text="3"/> 
</RelativeLayout> 

classe qui a des boutons:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Locale.getDefault(); 
     setContentView(R.layout.activity_animal_choice); 

     btnButton1 = (Button) findViewById(R.id.btnButton1); 
     btnButton1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
        Intent intent = new Intent(Menu.this, Car.class); 
        startActivity(intent); 

      } 
     }); 

Il serait bon de voir si cela est possible, sinon il sera probablement plus rapide et plus facile de créer différents apk de par langue

Répondre

1

Vous pouvez utiliser les mêmes classes d'activités et avoir des mises en page ou des fragments XML différents pour chaque langue. Voir la section "Conception d'une disposition flexible" au this page. Comme il est dit, ce sera un travail supplémentaire pour vous de vous assurer que tous ces fichiers de mise en page sont tenus à jour. Si vous envisagez de prendre en charge de nombreuses langues, vous pouvez envisager d'ajouter les boutons par programmation. Ensuite, vous devrez seulement mettre à jour les chaînes pour chaque langue. Voir this thread.

+0

Merci - Mais j'ai lu, mais ne peut voir nulle part dans la document qui dit ou me pointe dans la direction d'utiliser 1 fichier de mise en page, et en fonction de la langue dépendra de quel bouton fait quoi, à moins que je manque quelque chose de ce lien? –

+0

Je vous suggère d'utiliser plusieurs fichiers de mise en page, par exemple 'res/layout-de/main.xml',' res/layout-fr/main.xml', etc. L'activité est complètement indépendante de l'endroit où sont les boutons l'écran, de sorte que la même activité peut être utilisée avec toutes les mises en page. La mise en page correcte sera sélectionnée automatiquement en fonction des paramètres régionaux de l'appareil. –

+0

Je pourrais effectivement aller pour les boutons d'ajout par programme, comme toutes mes chaînes sont faites –

0

Vous devez donner tous les boutons de la même OnClickListener et que l'auditeur de vérifier ce que le texte du bouton est, quelque chose comme:

OnCLickListener listener = new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
       Intent intent = new Intent(); 

       if (v.getText().equals(getString(R.string.car)) { 
        intent.setClass(Menu.this, Car.class); 
       } 
       else if (v.getText().equals(getString(R.string.whatever)) { 
        intent.setClass(Menu.this, Whatever.class); 
       } 
       // ... 

       startActivity(intent); 
     } 
    }); 

button1.setOnClickListener(listener); 
button2.setOnClickListener(listener); 
button3.setOnClickListener(listener); 
+0

Merci - J'utilisais si les instructions, mais l'utilisait pour déterminer la langue pas tous les définir avec le même auditeur –

Questions connexes