Obtenir linearLayout à partir d'un autre xml Android
Dans le besoin d'obtenir un LinearLayout qui n'est pas situé dans le fichier xml principal (celui que j'ai mis dans setContentView()). Donc à écrire ce code:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout main = (LinearLayout) findViewById(R.id.main1);
LinearLayout oggetto = (LinearLayout) findViewById(R.id.element1);
main.addView(oggetto);
}
Le fichier xml où element1 est écrit:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/element1"
android:layout_width="fill_parent"
android:orientation="horizontal"
android:layout_height="90px"
android:background="#000000">
<LinearLayout
android:id="@+id/linearLayoutLeftBar"
android:layout_width="10px"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:background="#7FFF00" >
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayoutRightContent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#EEEEEE" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="45px"
android:orientation="horizontal"
android:background="#EEEEEE" >
<LinearLayout
android:id="@+id/linearLayoutTxtView1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#EEEEEE"
android:layout_gravity="right" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="TextBox1"
android:layout_marginLeft="5px"
android:textColor="#000000"
android:gravity="center" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayoutImgView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="right|center" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="16px"
android:layout_height="16px"
android:layout_marginRight="16px"
android:src="@drawable/ic_launcher"
android:background="#FF0000"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="fill_parent"
android:layout_height="45px"
android:orientation="horizontal"
android:background="#EEEEEE" >
<LinearLayout
android:id="@+id/linearLayoutTxtView1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#EEEEEE"
android:layout_gravity="right" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="TextBox2"
android:layout_marginLeft="5px"
android:textColor="#000000"
android:gravity="center" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayoutImgView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="right|center" >
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="16px"
android:text="TextBox3"
android:textColor="#000000"
android:gravity="center|right" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
Le problème est que j'obtiens une erreur lors du démarrage de l'application: Impossible de démarrer l'activité ComponentInfo{com.chiamata/com.chiamata.ChiamataActivity}: java.lang.NullPointerException
Cela parce que element1 est null. Si j'ai mis si(element1 != null) avant de l'ajouter à principal Linearlayout tout fonctionne bien, mais element1 est évidemment pas ajouté. J'ai besoin de l'ajouter par programmation, donc je ne peux pas les mettre tous dans un seul fichier xml.
Comment puis-je faire?
Merci, Mattia
OriginalL'auteur pindol | 2012-04-19
Vous devez vous connecter pour publier un commentaire.
Si j'ai bien comprendre votre question, vous pouvez utiliser
Ensuite, vous pouvez utiliser
main.addView(layout );
pour ajouter le modèle externe.OriginalL'auteur Dimitar Dimitrov
vous pouvez dire
OriginalL'auteur UVM
Pourquoi vous ne pouvez pas le mettre dans un XML et ensuite activer /désactiver la visibilité de l'attribut de ALLÉ VISIBLE?
OriginalL'auteur vtuhtan