2010-09-20 7 views
1

Y a-t-il un endroit où je peux trouver de la documentation sur la portée des fichiers XML? J'ai une application sur laquelle je travaille actuellement et j'ai du mal à faire fonctionner une fonctionnalité et il semble que le problème que je rencontre est que j'essaie d'accéder à un élément dans un fichier XML qui doit être hors de portée. Pour simplifier la mise en page, mon projet contient des fichiers main.xml, sub.xml, main.java et sub.java. Comme vous pouvez probablement le deviner, main.java fonctionne avec main.xml et sub.java travaille avec les éléments de sub.xml. Voici où le problème arrive, j'ai un élément TextView qui est créé dans main.xml dans lequel je voudrais modifier le texte, mais l'action qui le déclencherait se produira dans sub.java. Je ne peux pas comprendre comment le changer de sub.java, et je ne peux pas comprendre comment déplacer l'élément dans sub.xml. Le code J'utilise est assez simple:Portée XML dans Android

TextView titleText = (TextView) findViewById(R.id.myTitle); 
titleText.setText(filePath); 

je reçois un FC à chaque fois que je lance l'application, mais si je déplace le code dans main.java, il fonctionne parfaitement. Si quelqu'un peut offrir des idées, ou me diriger dans la direction d'une documentation qui expliquerait ce que les fichiers java peuvent accéder à quels éléments dans quels fichiers xml, ce serait génial! Désolé pour le roman, mais j'ai juste du mal à faire passer le message. Merci.

Répondre

0
try like this Bryan in Main.xml file it works with no issue...........Declare first & then Initialize it... 



    public class Main extends Activity { 

     static TextView tv; 
     static Button submit; 

     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 

      tv = (TextView) findViewById(R.id.header_text1); 
      } 
} 
+0

Ok, donc il compile et fonctionne de cette façon. J'ai ajouté une déclaration pour TextView avant la méthode onCreate, puis j'ai créé une méthode void statique publique nommée setCustomTitle() qui vient d'être appelée titleText.setText (sub.filePath); Dans sub.java, j'ai appelé main.setCustomTitle. Tout semblait casher, mais quand j'ai provoqué un rafraîchissement de l'écran dans l'émulateur qui appelle la fonction, il FCs. Je l'ai couru en debug, et il appelle bien setCustomTitle(), mais quand il essaie d'exécuter la ligne titleText.setText (filePath), il commet des erreurs. Des idées? Merci beaucoup pour votre aide Tilsan! – Bryan

+0

Pour votre information, juste pour vérifier, j'ai changé l'appel setText à titleText.setText (« Nouveau titre ») et il m'a donné encore un FC, de sorte que montre qu'il est erroring quand il tente de mettre le texte, pas nécessairement quand il essaie d'accéder à sub.filePath depuis main.java. – Bryan

+0

peut u s'il vous plaît dire ce message d'erreur, u got ur dans Logcat Bryan –

0

Activity.findViewById (int) ne fonctionne que si ce point de vue est dans la mise en page de l'activité. Donc non, vous ne pouvez pas vous référer à une vue dans main.xml car cette disposition ne s'applique pas à sub.

Avez-vous des TextViews dans sub.xml appelé myTitle?

+0

sub.xml est la mise en page pour les lignes dans une liste, et main.xml est la mise en page pour l'interface utilisateur principale, donc je ne pense pas que je peux mettre la textView en sub.xml . Peut-être que je dois repenser toute la mise en page! * sigh * – Bryan

0

Vous pouvez accéder au textview de la main.java (main.xml) dans submain.java comme suit
En main.java écrire le code suivant

static TextView titleText = (TextView) findViewById(R.id.myTitle); 
titleText.setText(filePath); 

et u pouvez accéder à ce submain.java comme

Main.titleText.setText(filePath); 
+0

J'ai essayé cela, mais j'ai une erreur disant que je ne peux pas accéder à la fonction non-statique findViewById dans un contexte statique. – Bryan

+0

@ Mr.Bryan: u peut afficher le code what u essayé maintenant –

+0

S'il vous plaît poster le code complet je voudrais qu'il le revoir Bryan –