2010-12-14 74 views
1

Eh bien, j'ai un autre problème que je n'arrive pas à trouver la solution ... J'ai une application qui charge le fichier main.xml au démarrage, bien sûr. Dans ce sont plusieurs boutons, et je veux que les boutons me prennent à un fichier XML différent. Je viens d'utiliser la méthode setContentView (R.layout.newlayout.xml) pour ça, et ça marche très bien. Le problème vient après cela. Si je référence l'un des boutons ou d'autres objets dans la nouvelle mise en page, l'application ne terminera même pas le chargement avant qu'elle ne se bloque et se ferme sur l'émulateur. Cependant, si je prends toutes les références à des objets, l'application fonctionne bien. Je peux naviguer TO les nouvelles mises en page, mais leurs boutons ne peuvent rien faire. Ai-je besoin de créer un fichier Java distinct pour chaque mise en page? Ou est-ce que je fais tout faux? J'essaie d'être aussi précis que possible ... Je suppose que vous pourriez dire que j'ai besoin de différentes "pages" dans mon application comme le ferait un site Web.Changer de vue/mise en page

+0

l'affichage de votre code de nous permettrait de localiser rapidement l'erreur. –

Répondre

0

Ok, pour quelqu'un là-bas avec le même problème et n'ont pas compris comment faire, comme je l'ai dit dans mon commentaire sur ylebre, mon collègue et moi avons enfin découvert comment le faire. Tout d'abord, nous avons ajouté

implements OnClickListener

à la classe, après

extends Activity 

puis, nous avons créé un nouveau fichier java, et au début du fichier il appelé

setContentView(R.layout.newlayout); 

au lieu de principal. Ensuite, nous avons fait un bouton comme suit:

Button button1 = (Button) findViewById(R.id.button01; 
button1.setOnClickListener(this); 

plus tard dans le code:

public void onClick(View v) { 
     switch(v.getId()) { 
      case R.id.button01: 
       startActivity(new Intent(this, NEWJAVAFILE.class)); 
       break; 

     } 
    } 

Et voilà! Nous avons simplement copié et collé ce code dans NEWJAVAFILE, changé les noms et ainsi de suite, et nous avons pu naviguer librement d'avant en arrière. Comme l'a dit Ylebre, tout le code de la nouvelle activité se trouve dans le fichier NEWJAVAFILE.java. OH et ne pas oublier d'ajouter le nom du fichier java au manifeste dans les balises:

<activity android:name=".NEWJAVAFILE">   
    </activity> 

tout semble si simple maintenant!

1

Je pense que ce que vous essayez de faire est mieux résolu en utilisant plusieurs fichiers java, chacun définissant sa propre activité android.

Bien qu'il soit possible d'avoir plusieurs mises en page/vues dans une seule activité, cela rendra généralement le code plus complexe et plus difficile à lire/déboguer dans le futur. En ayant chaque «écran» dans son propre fichier, il sera un peu plus facile de gérer toutes les vues différentes que vous devez jongler.

+0

Merci beaucoup! Au cours des deux ou trois dernières heures, j'ai collaboré avec un autre programmeur de mon bureau (qui n'a aucune expérience dans Android, un peu en Java et un peu en C#) et nous avons finalement trouvé comment tout faire fonctionner.Je souhaite que nous aurions vérifié votre poste d'abord, parce que c'est exactement ce que nous avons fini par faire! Je vais poster un exemple dans une réponse pour quelqu'un d'autre qui a ce problème. – Brandon

1

Les boutons et les vues ne peuvent se référer à ceux mentionnés dans le fichier en cours setContentView() ..

u peut tester en créant un bouton et initialisant à un R.id ... sans régler l'affichage du contenu .. U sera obtenir une force de fermeture ..

donc si u modifier le fichier XML u shud choses encore .... initialiser