findViewById () renvoie null - essayé TOUT
J'abandonne... même pas mon professeur sait pourquoi ce qui se passe.
Le problème, c'est: N'importe où ou comment je l'appelle pour cela la disposition des composants, ils ont toujours retourner la valeur null.
MISE en page: search_layout. 2 EdiText et 2 TextView enfants.
RUNTIME: setView(inflater.inflate(R.layout.search_layout, null)) //works fine, it displays the layout inside the dialog, yet, children are always returned as null by findViewById(R.id.some_search_layout_children)
EXCEPTION: Analyse d'exception de l'XML, comme ressource introuvable, donc null.
ESSAYÉ: Nettoyé mon projet autour de 1024 fois, essayé de mettre en œuvre une autre classe pour mon boîte de dialogue, même résultat, appelé findViewById en tant que membre de mon activité principale, à l'intérieur de la méthode initSearch() et à l'intérieur d'un anonyme de la mise en œuvre de OnClickListener pour mon dialogue, MÊME RÉSULTAT. Cassé les enfants dans des vues indépendantes et par programme appelé:
TextView text = (TextView) findResourceById(R.id.new_independant_textview); //same result
Je pense que j'ai tout essayé.
C'est mon Code:
public class Xyz extends Activity {
public void onCreate(...) { //some listener will trigger initSearch() }
private void initSearch() {
AlertDialog.Builder searchDialog = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
searchDialog.setTitle("Search Photos");
searchDialog.setMessage("Specify tag and value...");
//R.layout.search_dialog is my custom layour, it displays fine, it works.
searchDialog.setView(inflater.inflate(R.layout.search_dialog, null));
EditText tagText = (EdiText) findViewById(R.id.tagField); //WILL RETURN NULL
searchDialog.setPositiveButton( ... ) ...
searchDialog.show();
}
Maintenant, quand je fais:
EditText text = (EditText) findViewById(R.id.tagField); //returns null, ALWAYS
//no matter HOW, WHERE, global, local final, etc, it just returns null.
Voici le XML de ma mise en page personnalisée:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/search_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/tagText"
android:padding="7dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:text="@string/tag" />
<EditText
android:id="@+id/tagField"
android:padding="7dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"/>
<TextView
android:id="@+id/valueText"
android:padding="7dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:text="@string/value" />
<EditText
android:id="@+id/valueField"
android:padding="7dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"/>
</LinearLayout>
C'est mon R.java fichier:
public static final class id {
public static final int action_settings=0x7f0a0011;
public static final int add_album=0x7f0a0001;
public static final int add_photo=0x7f0a000d;
public static final int albums_list=0x7f0a0003;
public static final int delete_album=0x7f0a000b;
public static final int exit_finder=0x7f0a000f;
public static final int new_directory=0x7f0a000e;
public static final int open_album=0x7f0a000a;
public static final int photos_grid=0x7f0a0000;
public static final int rename_album=0x7f0a000c;
public static final int search_dialog=0x7f0a0004;
public static final int search_icon=0x7f0a0002;
public static final int splash_rutgers=0x7f0a0009;
public static final int tagField=0x7f0a0006; //problematic
public static final int tagText=0x7f0a0005; / problematic
public static final int terminate_app=0x7f0a0010;
public static final int valueField=0x7f0a0008; //problematic
public static final int valueText=0x7f0a0007; //problematic
}
Merci pour votre aide, bonne chasse.
source d'informationauteur Fer
Vous devez vous connecter pour publier un commentaire.
Appel
findViewById()
recherche de vues au sein de votre de l'Activité mise en page et pas votre boîte de dialogue de vue. Vous devez appelerfindViewById()
sur lesView
que vous définissez comme votre boîte de dialogue mise en page.Essayer cette
Avis comment je suis en gonflant la vue et le stocker dans un
View
nommédialogView
. Ensuite, pour trouver votreEditText
nommétagField
je suis en utilisantdialogView.findViewById(R.id.tagField);
La
TextView
avec l'idtext123
doit être déclarée à l'intérieur de laLayout
vous définissez avecsetContentView
Votre problème est que vous essayez de faire
.show()
sur un AlertDialog Constructeur, et non l'AlertDialog.Essayez le code suivant:
J'ai eu exactement le même problème pendant la programmation d'une application multilingue.
Finalement, j'ai trouvé que j'ai oublié de mettre à jour les étiquettes de certains de la disposition de l'activité de [xml] les fichiers.
J'ai eu 3 d'entre eux par l'activité:
J'ai mis à jour seulement le premier et j'ai oublié de mettre à jour les autres comme suit:
Tous les trois a la un seul TextView avec l'id de l':
Puis j'ai changé le nom de l'id de l'affichage de texte - seulement dans le premier fichier:
Et, bien-sûr, dans l'Activité du code Java (qui utilise tous les trois...):
Il a travaillé pour l'ordinaire (en anglais
<activity_name>.xml
) version.Mais quand je suis allé à la l'ATELIER de langue (l'hébreu
<activity_name>xml(iw)
)tv
suis nulle valeur, et j'ai même eu quelques écrase.Quand j'ai changé l'affichage de texte id des autres fichiers de
"@+id/status_textbox"
tout a fonctionné comme un charme...Donc, assurez-vous simplement que tous vos Identifiants sont mis à jour et pris en compte dans toutes vos mises en page et des langues.
Cela a résolu mon problème de toute façon..