Ajouter une vue à déjà existant xml viewgroup dans le code
Je voudrais être en mesure d'ajouter une vue à une déjà existante xml de mise en page dans le code:
LinearLayout ll = (LinearLayout) findViewById(R.layout.common_list);
TextView tv = new TextView(this);
tv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
tv.setText("sample text");
ll.addView(tv);
setContentView(ll);
Lors de la création d'un nouveau LinearLayout dans le code, il fonctionne, mais lors de l'utilisation d'une Ressource comme dans le code ci-dessus, il ne le fait pas.
common_list.xml:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="Quick List"/>
</LinearLayout>
quelle erreur vous donne dans le logcat?
ERREUR/AndroidRuntime(8357): java.lang.RuntimeException: Impossible de démarrer l'activité ComponentInfo{com.exemple.androidABC/com.exemple.androidABC.Common_ActivityList}: java.lang.NullPointerException 09-01 14:59:57.889: ERREUR/AndroidRuntime(8357): au android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2753) 09-01 14:59:57.889: ERREUR/AndroidRuntime(8357): au android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2769) 09-01 14:59:57.889: ERREUR/AndroidRuntime(8357): au android.app.ActivityThread.l'accès de 2500$(ActivityThread.java:129)
ERREUR/AndroidRuntime(8357): java.lang.RuntimeException: Impossible de démarrer l'activité ComponentInfo{com.exemple.androidABC/com.exemple.androidABC.Common_ActivityList}: java.lang.NullPointerException 09-01 14:59:57.889: ERREUR/AndroidRuntime(8357): au android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2753) 09-01 14:59:57.889: ERREUR/AndroidRuntime(8357): au android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2769) 09-01 14:59:57.889: ERREUR/AndroidRuntime(8357): au android.app.ActivityThread.l'accès de 2500$(ActivityThread.java:129)
OriginalL'auteur Klau3 | 2011-09-01
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser LayoutInflater
Si cela ne fonctionne pas, veuillez ajouter l'erreur de Logcat.
Aussi, vous devez modifier les propriétés de android:layout_width="fill_parent" android:layout_width="wrap_content" dans yout LinearLayout dans common_list.xml et aussi faire la même chose pour votre TextView dans common_list.xml
Pourquoi? Parce que votre mise en page est horizontale et orientée vers elle remplisse tout l'écran de l'espace. Votre TextEdit remplit autant d'espace que votre mise en page (dans ce cas, c'est l'ensemble de l'espace à l'écran). Maintenant, lorsque vous ajoutez un autre TextView, il est l'ajout correctement à droite de votre première TextEdit, donc c'est comme sortir de l'écran. Pour comprendre exactement ce qui se passe:
J'ai aussi eu ce problème à plusieurs reprises. Habituellement, si vous ajoutez Vue de la mise en page et vous ne le voyez pas (et vous n'obtenez pas les erreurs) problème avec la largeur/hauteur ou la position (ex. lorsque vous utilisez RelativeLayout).
LinearLayout ll = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.common_list, null); TextView tv = new TextView(this); tv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); tv.setText("sample text"); ll.addView(tv); setContentView(ll);
Joindre votre common_list.xml s'il vous plaît.
Je l'ai ajouté à la description du problème
essayez de changer de android:layout_width="fill_parent" android:layout_width="wrap_content" dans yout LinearLayout dans common_list.xml et aussi faire la même chose pour votre TextView dans common_list.xml
Wow, merci. Maintenant, la question est pourquoi? Est-ce parce que LayoutInflater n'a pas de racine ViewGroup? Ce serait bien si vous pouviez éditer votre exemple et ajouter une explication à ça pour aider les autres aussi. Je passe aujourd'hui de nombreuses heures sur ce problème. Merci encore, vous êtes mon héros 🙂
OriginalL'auteur kamil zych