2013-01-17 3 views
0

Je suis nouveau sur le développement Android et ces forums, donc je vous serais reconnaissant si vous pouviez aider. J'ai regardé autour de moi et essayé d'autres réponses, mais je n'arrive à rien.Android - réglage des variables de chaîne avec une méthode

J'ai écrit une méthode Java qui retourne des chaînes aléatoires à partir d'une ArrayList. J'ai trois éléments de TextView sur le XML de disposition d'activité principale que je voudrais placer quand un bouton est pressé (exécutant la méthode pour générer trois chaînes aléatoires).

Comment puis-je faire cela, chaque fois que je lance l'application sur mon téléphone, il se bloque donc il y a évidemment un défaut majeur.

Voici la méthode que je fais appel

public void generateExercises() { 


    Exercise e1 = new Exercise(); 
    Exercise e2 = new Exercise(); 
    Exercise e3 = new Exercise(); 

    e1.generateExercise(); 
    e2.generateExercise(); 
    e3.generateExercise(); 

    RelativeLayout lView = new RelativeLayout(this); 


    myText1 = (TextView)findViewById(R.id.myText1); 
    myText1.setText(e1.getName()); 

    myText2 = (TextView)findViewById(R.id.myText2); 
    myText2.setText(e2.getName()); 

    myText3 = (TextView)findViewById(R.id.myText3); 
    myText3.setText(e3.getName()); 

    lView.addView(myText1); 
    lView.addView(myText2); 
    lView.addView(myText3);  

    setContentView(lView); 
} 
//XML File 

<TextView 
    android:id="@+id/myText2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/exercise2title" 
    android:layout_alignBottom="@+id/exercise2title" 
    android:layout_alignLeft="@+id/textView1" 
    android:textAppearance="?android:attr/textAppearanceSmall" /> 

<TextView 
    android:id="@+id/myText3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/exercise3title" 
    android:layout_alignBottom="@+id/exercise3title" 
    android:layout_alignLeft="@+id/TextView01" 
    android:textAppearance="?android:attr/textAppearanceSmall" /> 

<TextView 
    android:id="@+id/exercise1title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/title" 
    android:layout_marginLeft="39dp" 
    android:layout_marginTop="64dp" 
    android:text="@string/exercisetitle_one" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

Merci

EDIT: Vous avez manqué la section XML avec "myText1"

<TextView 
    android:id="@+id/myText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/exercise1title" 
    android:layout_alignBottom="@+id/exercise1title" 
    android:layout_alignRight="@+id/title" 
    android:layout_marginRight="24dp" 
    android:textAppearance="?android:attr/textAppearanceSmall" /> 

EDIT: Merci pour tous vos aide, le code fonctionne maintenant comme prévu. J'ai également dû remplacer la méthode XML onclick avec un écouteur onClick personnalisé.

Répondre

0

Appel setContentView (Lview) de votre méthode onCreate.

Après cela, vous pouvez obtenir/définir vos textViews:

myText1 = (TextView)findViewById(R.id.myText1); 
myText1.setText(e1.getName()); 

Vous n'avez pas besoin d'utiliser addView, parce que les points de vue existent déjà dans Lview (vous les avez mis en place dans le fichier XML).

Donc, fondamentalement,

Réglage du contentView à Lview prendra votre mise en page XML et créer avec toutes les vues. Après cela, vous trouverez la textview avec myText1 = (TextView)findViewById(R.id.myText1); puis vous définissez le texte avec myText1.setText(e1.getName());

Il est également utile de voir la sortie de logcat pour voir ce qui se passe mal, et essayez la fonction « debug » d'éclipse, avec un point d'arrêt défini sur 'nullPointerException'. L'affichage de la sortie logcat ici peut le rendre 100 fois plus rapide pour que nous puissions savoir ce qui ne va pas!

1

Je suppose que vous devez le définir sur Contentview avant d'ajouter le texte aux TextViews. Vous essayez d'ajouter du texte à TextView qui n'est pas encore créé. Essayez simplement de définir contentView avant d'y ajouter le texte. Si je le sais bien, vous n'avez pas besoin d'ajouter les TextViews à lView parce que vous l'avez fait dans le fichier XML. Vous avez réellement défini la mise en page dans le code XML, vous n'avez donc plus besoin de le créer dans le code. Créez simplement la mise en page dans le fichier XML et remplissez-la comme vous le faites maintenant.

public void generateExercises() { 


Exercise e1 = new Exercise(); 
Exercise e2 = new Exercise(); 
Exercise e3 = new Exercise(); 

e1.generateExercise(); 
e2.generateExercise(); 
e3.generateExercise(); 

setContentView(R.layout.*****); //putyour layoutname here 
myText1 = (TextView)findViewById(R.id.myText1); 
myText1.setText(e1.getName()); 

myText2 = (TextView)findViewById(R.id.myText2); 
myText2.setText(e2.getName()); 

myText3 = (TextView)findViewById(R.id.myText3); 
myText3.setText(e3.getName()); 
} 

ce schould faire ce que vous voulez faire

0
public void generateExercises() { 
    setContentView(R.layout.xml_file_name); 

    Exercise e1 = new Exercise(); 
    Exercise e2 = new Exercise(); 
    Exercise e3 = new Exercise(); 

    e1.generateExercise(); 
    e2.generateExercise(); 
    e3.generateExercise(); 

    myText1 = (TextView)findViewById(R.id.myText1); 
    myText1.setText(e1.getName()); 

    myText2 = (TextView)findViewById(R.id.myText2); 
    myText2.setText(e2.getName()); 

    myText3 = (TextView)findViewById(R.id.myText3); 
    myText3.setText(e3.getName()); 

} 
0

Où est votre myText1 dans le fichier XML?

myText1 = (TextView)findViewById(R.id.myText1); 
myText1.setText(e1.getName()); //NPE here? 
Questions connexes