Aller au contenu

findViewById retourne null


tomy29

Recommended Posts

Bonjour,

J'ai le code suivant (simple bouton qui affiche un Dialog qui contient un editText et un Button.

Mon soucis c'est que (Button) findViewById(R.id.Button01) est Null alors que R.id.Button01 a bien une valeur

public class Main extends Activity implements OnClickListener {

   Button btnCreate;
   String returnedValue="";
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       btnCreate = (Button) findViewById(R.id.btnCreate);
       btnCreate.setOnClickListener(this);
   }
   @Override
   public void onClick(View component) {
       switch (component.getId()){

        case R.id.btnCreate : showCreateDialog();
                               EditText edReturnedValue = (EditText)findViewById(R.id.editReturnedValue);
                               edReturnedValue.setText(returnedValue);
       }

   }


private void showCreateDialog(){
   final Dialog alert = new Dialog(this);
       alert.setContentView(R.layout.mainpopup);
       Button buttonValid = (Button) findViewById(R.id.Button01);
       buttonValid.setOnClickListener(new OnClickListener() {

           @Override
           public void onClick(View arg0) {
               EditText inputBox1 =(EditText)alert.findViewById(R.id.EditText01);
       alert.show();
       returnedValue = inputBox1.getText().toString();
       alert.dismiss();
           }
       });
}
}

Je ne comprends pas pourquoi, si vous pouvez m'aider....

Merci!

Lien vers le commentaire
Partager sur d’autres sites

Dans "res/layout/mainpopup.xml", je parie qu'il n'y a pas de tag "" :)

Edit : ah si ok j'ai compris ! Tu fais un simple "findViewById" qui correspond à "this.findViewById", c'est à dire que tu cherches ta vue dans le layout que tu as appliqué dans ton activité principale, qui ne contient pas de Button01. Si tu as fait le setContentView sur l'objet X c'est X.findViewById que tu dois appeler (ici alert.findViewById(...)).

Modifié par naholyr
Lien vers le commentaire
Partager sur d’autres sites

voila, merci ;)

par contre quand je debug au pas a pas, quand je suis rendu au buttonValid.setOnClickListener(new OnClickListener(), il ne se passe plus rien ensuite, je ne rentre pas dans le onClick().

Une idée?

Lien vers le commentaire
Partager sur d’autres sites

Tel que je comprends ton code, tu crées un dialogue, tu récupères un bouton dans ce dialogue, tu dis qu'au clic sur ce bouton on affiche ledit dialogue, et tu n'affiches pas le dialogue, donc le bouton n'apparait pas, donc personne ne peut cliquer dessus, donc le dialogue n'est pas prêt d'apparaître... Y a pas comme un souci dans ta conception ? :P

Lien vers le commentaire
Partager sur d’autres sites

  • 6 months later...

bonjour j'ai le même problème.

- Mon fichier java est :

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1 = (ImageButton) findViewById(R.id.button1);

- Mon fichier xml est la suivante :

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout 
android:orientation="vertical"
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/fond"
android:layout_marginTop="0px"
android:layout_marginBottom="0px"
xmlns:android="http://schemas.android.com/apk/res/android"
>

<ImageButton
android:id="@+id/button1"
android:layout_width="70px"
android:layout_height="70px"
android:scaleType="fitXY"
android:background="@android:color/transparent"
android:src="@drawable/logo1"
android:layout_x="70px"
android:layout_y="70px"
>

</AbsoluteLayout>

- Enfin mon fichier r.java contient :

   public static final class id {
       public static final int button1=0x7f050001;
       public static final int button2=0x7f050002;
}

Je ne voit pas ou est l'erreur pourtant quand je passe sur la ligne button1 = (Button) findViewById(R.id.button1); l'emulateur me force a fermer

merci d'avance de vos réponces

Modifié par nini29
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...