Je débute actuellement dans la programmation en Java pour Android et j'ai commencé le cours Créez des applications pour Android.
Cependant, je suis au chapitre 2 "Création d'interfaces graphiques" partie 1 "Constitution des interfaces graphiques" et je bloque sur la fin.
Mon interface est composée d'un TextView centré et quand je veux changer le texte affiché à la création de l'activité, ma tablette me retourne "L'application 'myfirstapplication' s'est arrêtée" dès le lancement de l'application. Eclipse de son côté me retourne une "java.lang.NullPointerException".
Voici mon code:
MainActivity.java:
package com.example.myfisrtapplication;
import android.app.Activity;
import android.os.Bundle;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class MainActivity extends Activity {
RelativeLayout layout = null;
TextView text = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
layout = (RelativeLayout) RelativeLayout.inflate(this, R.layout.fragment_main, null);
text = (TextView) layout.findViewById(R.id.hello);
text.setText("hello");
setContentView(layout);
}
}
Le textView se trouve dans le layout "activité_main.xml". Or toi tu inflates le layout " fragment_main.xml" et tu cherches la référence dans de ton textView dans ce layout.
La référence n'existant pas, ton textView vaut null et tu as l'exception quand tu cherches à lutilser. Si tu inflates le layout "activity_main.XML" tu n'auras plus le soucis.
D'ailleurs quand tu es dans une activité, tu n'as pas besoin d'inflzter le layout toi même. Tu peux directement passer l'identifiant du layout à la méthode "setContentView" puis récupérer les références de tes contrôles via la méthode "findViewById".
Merci de m avoir repondu. En effet, ton explication est logique. En fait, en cherchant a travers google, je suis tombe sur une solution qui proposait d inflater le fragment_main plutot que le activity_main mais j ai oublie de remettre comme avant. .
Je n ai pas eclipse sous la main mais des que je l aurais, je testerais ta solution.
J aurais encore une question. A quoi sert le fragment_main ?
Merci encore
blenderiste09
Quand le sage désigne la lune, l'idiot regarde le doigt.
Dans. Android, on utilise des Activity et des Fragment.
Si une activité peut être considéré comme un écran, un fragment peut être considéré comme un sous écran ou partie d'une écran ayant son propre cycle de vie, son propre layout, etc. Un fragment est généralement tenu par une Activity et une Activity peut tenir 0, 1 ou plusieurs Fragments.
Les Fragments sont notamment utilisés pour gérer correctement des affichages d'écrans différents entre smartphone et tablette tout en pouvant réutiliser le code et ainsi ne pas recoder toute la partie fonctionnelle plusieurs fois.
Je suppose donc que ton fragment_layout.xml était destiné à un Fragment
× 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.
Mon site - Mon livre sur le XML - Mon blog
Mon site - Mon livre sur le XML - Mon blog
Mon site - Mon livre sur le XML - Mon blog
Mon site - Mon livre sur le XML - Mon blog