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

1

ERROR/AndroidRuntime (10985): вызвано: java.lang.IllegalStateException: указанный дочерний элемент уже имеет родительский элемент. Сначала вы должны сначала вызвать removeView() родительского родителя.

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

Codice (XML): [Seleziona]

<?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;
}               
  • 0
    Опубликуйте свой полный журнал ошибок и сообщите нам, в какой строке происходит исключение (например, MyCode.java:34 - строка 34 из MyCode.java)
Теги:
tabs

2 ответа

5

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

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.pane0, container, false);
}
1

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

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

  • 0
    Но также, если я ставлю другое намерение, а также я создаю три разных XML-файла, ошибка всегда присутствует .... это ошибка журнала
  • 0
    05-15 02: 32: 53.681: ОШИБКА / AndroidRuntime (16799): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: главная 05-15 02: 32: 53.681: ОШИБКА / AndroidRuntime (16799): java.lang.RuntimeException: Невозможно запустить действие ComponentInfo {it. android.infoconsumarori / it.android.infoconsumarori.dettaglio}: java.lang.IllegalStateException: указанный дочерний элемент уже имеет родителя. Сначала вы должны вызвать removeView () у родителя ребенка.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню