2010-11-23 8 views
0

J'ai cherché longtemps et je ne trouve pas de solution à mon problème. J'essaye de créer un dialogue avec un AutoCompleteTextView. J'ai suivi le tutoriel sur le site Web du développeur Android, et cela a très bien fonctionné. J'ai réussi à utiliser des mises en page sur Dialogs avant, donc j'ai pensé que ce serait aussi facile. J'ai créé une mise en page pour mon dialogue et j'ai vérifié que l'AutoCompleteTextView avait un ID. Voici où les choses intéressantes se produisent ...AutoCompleteTextView Exception NullPointer

dialog.setContentView(R.layout.auto_layout);  
AutoCompleteTextView auto_tv = (AutoCompleteTextView)findViewById(R.id.role_ac); 

Voici également la disposition.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <TextView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:text="Role" /> 
    <AutoCompleteTextView android:id="@+id/role_ac" android:layout_width="280dip" android:layout_height="wrap_content"/> 
    <Button android:layout_height="wrap_content" 
     android:layout_width="fill_parent" android:text="Done" 
     android:id="@+id/auto_doneButton" /> 
</LinearLayout> 

Pour une raison quelconque, auto_tv est nul même s'il existe dans la disposition auto_layout. La seule façon dont j'ai pu obtenir une AutoCompleteTextView dans une boîte de dialogue consiste à créer la mise en page par programmation. Pourquoi AutoCompletTextView est-il nul lorsque j'essaie de l'utiliser? Ai-je oublié quelque chose dans ma disposition ou ne construis-je pas l'objet correctement? Toute aide à ce sujet serait grandement appréciée. Merci.

+0

Pouvez-vous fournir le contexte de l'emplacement de la ligne de Java dans l'application? De quelle activité fait-elle partie? – Blumer

+0

Je fais quelque chose de similaire ICI !!! http://stackoverflow.com/questions/12854336/autocompletetextview-backed-by-cursorloader – toobsco42

Répondre

2

Vous mélangez deux contextes différents dans vos appels à setContentView et findViewById. Dans la première instruction, vous définissez la vue de contenu de l'objet dialog. Dans la deuxième déclaration, vous recherchez une vue dans l'activité parente. Vous voulez effectuer les deux appels en utilisant l'objet de dialogue. La syntaxe correcte doit être:

dialog.setContentView(R.layout.auto_layout);  
AutoCompleteTextView auto_tv = (AutoCompleteTextView) dialog.findViewById(R.id.role_ac); 
0

Ok. Je l'ai juste compris. J'ai regardé trop de code pour attraper mon erreur. Voici la solution.

dialog.setContentView(R.layout.auto_layout);  
AutoCompleteTextView auto_tv = (AutoCompleteTextView)dialog.findViewById(R.id.role_ac); 

je devais préciser d'utiliser la mise en page de dialogue et non la mise en page de l'application principale qui a été impliquée par ne pas utiliser dialog.findViewByID.

Questions connexes