je viens de me mettre au dev android, sous Android Studio, et voilà ce que j'essaie de faire :
un simple programme avec un bouton et une ligne de texte en dessous. Lors de l'appui sur le bouton, un chiffre est généré et affiché dessous / sur le bouton / nimporte où.
Le soucis : je ne comprends pas comment passer le résultat du random que j'ai fait dans mon code java, dans le layout Xml afin d'afficher le résultat dans un TextView.
package jlemattre.myapplication;
//N'oubliez pas de déclarer le bon package dans lequel se trouve le fichier !
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int nombreAleatoire = 1 + (int)(Math.random() * ((20 - 1) + 1));
String nombre = ""+nombreAleatoire;
setContentView(R.layout.activity_main);
}
}
En fait lorsque tu fait setContentView(R.layout.activity_main) tu demande à afficher le layout qui a pour identifiant R.layout.activity_main. Cet identifiant est un int généré automatiquement à partir du nom du fichier de ton layout et qui est stocké dans la sous-classe layout de la classe R. Ton interface graphique va donc être construite en suivant le layout que tu a créé ainsi lorsque la méthode va lire:
Elle va comprendre "créer un TextView (c'est une classe qui hérite de View de la même manière que sur pc où elle aurait hérité de JPanel avec swing) qui va remplir le parent horizontalement, qui a pour text @string/text, qui sera en gras...". Tu aurait aussi très bien pu créer ton interface graphique en java, en utilisant directement les constructeur des différentes vues.
Donc comme je te l'ai dit il existe une classe TextView depuis laquelle on pourra manipuler la vue. Encore faut il pouvoir récupérer l'instance qui a été crée lors du setContentView pour cela il faut associé à ton textview une id qui sera elle aussi stockée dans la classe R. Il faut donc que tu rajoute un attribut xml à ton TextView:
Tu peut lui donner le nom que tu veut mais n'oublie pas que ce nom sera stocké dans R il faut donc que ce soit un nom de variable correct donc pas de "id/1textView" par exemple.
Ensuite tu utilise cette id pour récupérer ta référence via la méthode findViewById(int id):
protected void onCreate(Bundle param){
//tu fait ton setContentView
TextView txtView= (TextView) findViewById(R.id.textViewPourLeNombre); }
Tu peut ensuite utiliser les méthode de txtView pour modifier le contenu du textView. Je te laisse pour cela voir la classe TextView dans la doc! (N'oublie pas de regarder les méthodes des classes parentes)
Même en important bien MA VERSION de R, c'est à dire import monpackage.R , j'ai quand même des problèmes avec findViewById qui trouve bien mon fichier XML mais pas les id à l'intérieur.
Vérifit bien que tu as rajouter android:"@+id/..." dans ton xml et essaye de sauvegarder ton projet. Sinon aucune ereur dans le xml? Et quelle est l'erreur que tu obtient lorsque tu fait findViewById() ?
Ctrl+space
[Android] Stockage de ressources générées à l'exéc
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Ctrl+space
Ctrl+space