Ajouter dynamiquement des imageView à disposition
Chaque fois que je vais ajouter une Image vue à ma Disposition Linéaire dynamiquement j'obtiens une exception de pointeur null.
LinearLayout tables = (LinearLayout) findViewById(R.id.table);
for(int i = 0; i < data.length; i++){
ImageView image = new ImageView(getApplicationContext());
try{
int imgID = getResources().getIdentifier(data[i], "drawable", "package");
image.setImageResource(imgID);
}catch(Exception e){
int imgID = getResources().getIdentifier("nia", "drawable", "package");
image.setImageResource(imgID);
}
tables.addView(image); //NULL POINTER THROWN HERE
}
Quand je debug, le imgID a une valeur, donc je connais son travail. Je ne comprends juste pas pourquoi sa valeur null si
tables
est nul, vous avez probablement hadven passetContentView
ou R. id.le tableau n'est pas de ce point de vue
Vous devez vous connecter pour publier un commentaire.
Si c'est la ligne qui provoque l'Exception de Pointeur Null:
Puis
tables
est nul, tout simplement findViewById() n'a pas trouvé de point de Vue avec l'idR.id.table
dans la disposition actuelle affichée.(Si vous voulez aider à comprendre pourquoi
tables
est nulle, s'il vous plaît poster la mise en page qui vous passe àsetContentView()
)Ajout de commentaires
Voici une manière générale, pour créer un PopupWindow. Il utilise un LayoutInflator pour gonfler la mise en page afin que nous puissions accéder à ajouter dynamiquement des éléments pour la mise en page. (Notez que nous avons portée à trouver
popupLayout.findViewById(...)
):Comprendre que l'élément racine dans
popup.xml
devrait avoir unbackground
attribut défini autrement la fenêtre est transparent par défaut.findViewById(R.id.table)
retourne null... à cet effettables
est null.window
) puis utiliserwindow.findViewById(R.id.table)
.pour vérifier si il y a un problème avec votre XML de configuration, vous pouvez essayer de définir la mise en page par programme
Et ajoute de ce point de vue comme un ContentView