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).

  • Come caricare un APK da Jenkins / Hudson a Play Store?
  • Cattura della qualità dell'image dopo la ridimensionamento / ridimensionamento della bitmap
  • eclipse, nuovo progetto applicativo android, "button successivo" è distriggersto nella sezione che vuole il nome del progetto
  • Android: L'utilizzo di SVG in res port ad errore: "Il nome del file deve terminare con .xml o .png"
  • come passare il risultato di asynctask onpostexecute metodo nell'attività parentica android
  • Devo utilizzare PendingIntent.getService () o getBroadcast con AlarmManager?
  • 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?

  • Android: aggiungi la visualizzazione con l'animation di espansione (senza lampeggiare)
  • Retrofit e GET utilizzando i parametri
  • libreria di visualizzatori pdf per Android
  • come creare un text specifico su TextView BOLD
  • Come mostrare la window di dialogo di avviso in un thread in esecuzione?
  • Applicazione fullscreen Android - impedisce l'accesso alla barra di stato
  • 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.