Fragmentos – El niño especificado ya tiene un padre. Debe llamar a removeView () en el padre del niño primero

Estoy recibiendo este error. He intentado muchas soluciones, pero yo coudnt resolver esto. ¡Ayuadame! Necesito agregar la vista de la superficie y el botón a la actividad usando fragmentos.

CamActivity.java:

public class CamActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cam); FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.fragmentContainer); if(fragment == null) { fragment = new CamFragment(); fm.beginTransaction() .add(R.id.fragmentContainer, fragment) .commit(); } } } 

CamFragment.java:

 public class CamFragment extends Fragment { private static final String TAG = "CamFragment"; private Camera mCamera; private SurfaceView mSurfaceView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){ View v = inflater.inflate(R.layout.camera_fragment, parent); Button capturePic = (Button)v.findViewById(R.id.img_capture); capturePic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getActivity().finish(); } }); mSurfaceView = (SurfaceView)v.findViewById(R.id.surfaceView1); return v; } } 

Error:

 04-18 13:24:12.735: E/AndroidRuntime(6321): FATAL EXCEPTION: main 04-18 13:24:12.735: E/AndroidRuntime(6321): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pack.camdictionary/com.pack.camdictionary.CamActivity}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1728) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1747) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.app.ActivityThread.access$1500(ActivityThread.java:155) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.os.Handler.dispatchMessage(Handler.java:130) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.os.Looper.loop(SourceFile:351) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.app.ActivityThread.main(ActivityThread.java:3814) 04-18 13:24:12.735: E/AndroidRuntime(6321): at java.lang.reflect.Method.invokeNative(Native Method) 04-18 13:24:12.735: E/AndroidRuntime(6321): at java.lang.reflect.Method.invoke(Method.java:538) 04-18 13:24:12.735: E/AndroidRuntime(6321): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) 04-18 13:24:12.735: E/AndroidRuntime(6321): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:659) 04-18 13:24:12.735: E/AndroidRuntime(6321): at dalvik.system.NativeStart.main(Native Method) 04-18 13:24:12.735: E/AndroidRuntime(6321): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.view.ViewGroup.addViewInner(ViewGroup.java:2007) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.view.ViewGroup.addView(ViewGroup.java:1902) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.view.ViewGroup.addView(ViewGroup.java:1859) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.view.ViewGroup.addView(ViewGroup.java:1839) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.support.v4.app.NoSaveStateFrameLayout.wrap(NoSaveStateFrameLayout.java:40) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:931) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:570) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1166) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.app.Activity.performStart(Activity.java:3837) 04-18 13:24:12.735: E/AndroidRuntime(6321): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1701) 04-18 13:24:12.735: E/AndroidRuntime(6321): ... 11 more 

Trate de reemplazar

 View v = inflater.inflate(R.layout.camera_fragment, parent); 

Con

 View v = inflater.inflate(R.layout.camera_fragment, parent, false); 

o

 View v = inflater.inflate(R.layout.camera_fragment, null); 

Esta pregunta ya había sido contestada, pero todavía me gustaría añadir la razón para la adición de falsos como el tercer parámetro.

El método infle () toma tres argumentos:

  • ID del recurso del diseño que desea inflar.
  • The ViewGroup es el padre del diseño inflado. Pasar el contenedor es importante para que el sistema aplique parámetros de diseño a la vista raíz del diseño inflado, especificado por la vista principal en la que va.
  • Un booleano que indica si el diseño inflado debe estar conectado al ViewGroup (el segundo parámetro) durante la inflación. (En este caso, esto es falso porque el sistema ya está insertando el diseño hinchado en el contenedor-passing true crearía un grupo de vista redundante en el diseño final.)

Fuente: http://developer.android.com/guide/components/fragments.html

Especificar Id para el elemento principal y secundario, especialmente para las vistas personalizadas, en el archivo xml puede resolver el problema.

prueba esto.

  ((CamActivity)getActivity()).finish(); 
  • Programación con SurfaceView y estrategia de hilos para el desarrollo de juegos
  • Ejecutar una tarea larga en glThread sin bloquear el hilo de la interfaz de usuario en Android
  • Android Multiple SurfaceViews
  • Cambiar tamaño de Android personalizado SurfaceView
  • Cómo reproducir varios archivos de video simultáneamente en un diseño lado a lado en diferentes vistas en Android
  • El nuevo procesamiento de gms.maps.MapView se retrasa un poco cuando está en un ListView?
  • Android: FPS bajo que dibuja muchos mapas de bits en una vista de superficie
  • Adición de vista de texto a la vista de superficie
  • Vista superficial en capas en un FrameLayout en Android
  • ¿Mejora el rendimiento de la vista personalizada SurfaceView-dervied?
  • ¿Es esto posible tener la opinión de la textura para la cámara en forma circular para el androide?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.