Frammento di Android (con pacchetto di compatibilità a 2.3.3) crea "il figlio specificato ha già un errore genitore"

Sto utilizzando frammenti nella mia applicazione Android utilizzando il pacchetto di compatibilità. Ho provato l'applicazione su un Nexus One che esegue 2.3.3 e un emulatore 2.2 API API.

Quando si aggiunge il frammento tramite il layout XML, esso funziona ottimamente (utilizzando un tag di frammento).

  • crash prima dell'avvio dell'applicazione: SecurityException: Denial of Permission: INTERACT_ACROSS_USERS_FULL
  • Come specificare la directory per NDK_MODULE_PATH
  • Come posso creare una function definita dall'utente in SQLite?
  • INSTALL_FAILED_NO_MATCHING_ABIS quando installa apk
  • Imansible get spinner personalizzato in android
  • TextView riavvia Marquee quando si modifica un altro TextView nello stesso LinearLayout
  • Quando si aggiunge il frammento in modo dinamico in un framelayout, non si aggiunge correttamente il frammento al contenitore e genera il seguente errore.

    alStateException: The specified child already has a parent. You must call removeView() on the child's parent first 

    La stacktrace completa per questo è sotto.

     05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.view.ViewGroup.addViewInner(ViewGroup.java:1976) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.view.ViewGroup.addView(ViewGroup.java:1871) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.view.ViewGroup.addView(ViewGroup.java:1828) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.view.ViewGroup.addView(ViewGroup.java:1808) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.support.v4.app.NoSaveStateFrameLayout.wrap(NoSaveStateFrameLayout.java:40) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:743) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:933) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:578) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1219) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:380) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.os.Handler.handleCallback(Handler.java:587) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.os.Handler.dispatchMessage(Handler.java:92) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.os.Looper.loop(Looper.java:123) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.app.ActivityThread.main(ActivityThread.java:3839) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at java.lang.reflect.Method.invokeNative(Native Method) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at java.lang.reflect.Method.invoke(Method.java:507) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at dalvik.system.NativeStart.main(Native Method) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): FATAL EXCEPTION: main 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.view.ViewGroup.addViewInner(ViewGroup.java:1976) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.view.ViewGroup.addView(ViewGroup.java:1871) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.view.ViewGroup.addView(ViewGroup.java:1828) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.view.ViewGroup.addView(ViewGroup.java:1808) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.support.v4.app.NoSaveStateFrameLayout.wrap(NoSaveStateFrameLayout.java:40) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:743) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:933) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:578) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1219) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:380) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.os.Handler.handleCallback(Handler.java:587) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.os.Handler.dispatchMessage(Handler.java:92) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.os.Looper.loop(Looper.java:123) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at android.app.ActivityThread.main(ActivityThread.java:3839) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at java.lang.reflect.Method.invokeNative(Native Method) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at java.lang.reflect.Method.invoke(Method.java:507) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 05-17 19:44:03.528: ERROR/AndroidRuntime(7735): at dalvik.system.NativeStart.main(Native Method) 

    Questo è il layout che sto utilizzando – il FrameLayout è il contenitore in cui inserisco.

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <HorizontalScrollView android:layout_height="wrap_content" android:layout_width="wrap_content" android:scrollbars="none" android:id="@+id/activity_phone_tabbedview_scroll"> <LinearLayout android:orientation="horizontal" android:layout_height="wrap_content" android:layout_width="fill_parent"> <Button android:text="Something" android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/tabs" android:textColor="@color/White" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="10dp" android:paddingBottom="10dp" android:textSize="19sp" android:onClick="Something" /> <Button android:layout_width="wrap_content" android:id="@+id/button1" android:layout_height="wrap_content" android:paddingLeft="10dp" android:textColor="@color/White" android:text="Something" android:background="@drawable/tabs" android:paddingBottom="10dp" android:textSize="19sp" android:paddingRight="10dp" android:paddingTop="10dp" android:onClick="Something"></Button> <Button android:layout_width="wrap_content" android:id="@+id/button2" android:layout_height="wrap_content" android:paddingLeft="10dp" android:textColor="@color/White" android:text="Something" android:background="@drawable/tabs" android:paddingBottom="10dp" android:textSize="19sp" android:paddingRight="10dp" android:paddingTop="10dp" android:onClick="Something"></Button> <Button android:text="Something" android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/tabs" android:textColor="@color/White" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="10dp" android:paddingBottom="10dp" android:textSize="19sp" android:onClick="Something"/> </LinearLayout> </HorizontalScrollView> <FrameLayout android:id="@+id/activity_phone_tabbedviewer_fragment_container" android:layout_height="match_parent" android:layout_width="match_parent" android:layout_below="@id/activity_phone_tabbedview_scroll"> </FrameLayout> </RelativeLayout> 

    Il codice che sto usando per inserire effettivamente il frammento è sotto.

     FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); NewsList newsList = new NewsList(); fragmentTransaction.add(R.id.activity_phone_tabbedviewer_fragment_container, newsList); fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); fragmentTransaction.commit(); 

    Qualcuno ha idea di cosa non va?

  • qualsiasi notifica di limitazione tramite APNS o C2DM?
  • Apri l'applicazione sulla notifica di firebase ricevuta (FCM)
  • ImageView - hanno width della corrispondenza di altezza?
  • Mantenendo in vita un servizio GPS e ottimizzando la durata della batteria
  • Crittografia di file con AES su Android
  • Android Ottieni latitudine e longitudine con il gestore di località
  • 2 Solutions collect form web for “Frammento di Android (con pacchetto di compatibilità a 2.3.3) crea "il figlio specificato ha già un errore genitore"”

    Puoi submit il contenuto del tuo onCreateView(...) nel Fragment NewsList ?

    Sto indovinando a call LayoutInflater.inflate(...) ad un certo punto. Se è così, è necessario utilizzare la versione sovraccarica e passare il file attachToRoot come false poiché la View verrà aggiunta alla hierarchia nella chiamata Fragment.replace(...) , quindi non dovrebbe essere collegata durante l'inflazione.

    Molte grazie! Per renderlo più banale, ecco come ha funzionato per me:

     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Call the specific overload of inflate return inflater.inflate(R.layout.frag_layout, null, false); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.