Вкладки Android У указанного дочернего элемента уже есть родительский элемент. Сначала вы должны вызвать removeView () у родителя ребенка - PullRequest
1 голос
/ 15 мая 2011

ОШИБКА / AndroidRuntime (10985): Причина: java.lang.IllegalStateException: у указанного дочернего элемента уже есть родительский элемент. Сначала необходимо вызвать removeView () для родительского дочернего элемента.

Это мой XML tabs_dettaglio.xml Я использую для визуальных вкладок:

Кодекс (XML): [Селезиона]

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:id="@+id/relativeimg" 
    >
    <RelativeLayout 
        android:id="@+id/relativeimg1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        >
        <ImageView 
            android:layout_width="wrap_content" 
            android:id="@+id/imageView3" 
            android:layout_height="wrap_content"  
            android:layout_marginLeft="10dip">
        </ImageView>
    </RelativeLayout>
    <RelativeLayout 
        android:id="@+id/relativeimg2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        >
        <ImageView 
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content" 
            android:id="@+id/imageView2"  
            android:layout_marginLeft="220dip">
        </ImageView>
    </RelativeLayout>
    <RelativeLayout 
        android:id="@+id/relativeimg3" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        >
        <ImageView 
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content" 
            android:id="@+id/imageView1"  
            android:layout_marginLeft="97dip">
        </ImageView>
    </RelativeLayout>
</RelativeLayout>

это код Java:

private void setTabs() {
    tabHost = getTabHost();
    tabHost.addTab(tabHost.newTabSpec("1").setContent(new Intent(this,d.class)).setIndicator(addImg(1)));
    tabHost.addTab(tabHost.newTabSpec("2").setContent(new Intent(this,d.class)).setIndicator(addImg(2)));
    tabHost.addTab(tabHost.newTabSpec("3").setContent(new Intent(this,d.class)).setIndicator(addImg(3)));
}

private View addImg(int i) {
    int cc;
    int cc2;
    if(i==1) {
        cc = R.id.imageView3;
        cc2 = R.drawable.menu_oggi;
    } else if(i==2){
        cc = R.id.imageView2;
        cc2 = R.drawable.menu_ieri;
    } else {
        cc = R.id.imageView1;
        cc2 = R.drawable.menu_domani;
    }
    View tabIndicator = LayoutInflater.from(getBaseContext()).inflate(R.layout.tabs_dettaglio,null);                
    ImageView icon = (ImageView) tabIndicator.findViewById(cc);
    icon.setBackgroundResource(cc2);
    return icon;
}               

Ответы [ 2 ]

5 голосов
/ 07 октября 2012

Должен иметь следующий метод.Обратите внимание, что третий аргумент inflate - false

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.pane0, container, false);
}
1 голос
/ 15 мая 2011

Вам необходимо добавить разные классы для каждой вкладки, не одинаковые на трех вкладках.Возможно, вы захотите создать xml-файл для каждой вкладки отдельно, а не все в одной, как вы делаете сейчас.

Обратитесь к руководству по макету вкладки ( здесь ), чтобы получить представление.Каждый .setContent(intent); относится к отдельному экземпляру intent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...