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:
- Cámara androide2 procesa cada fotograma y muestra su vista previa
- Android Surfaceview Crash sin salida de error
- El video de la API de MediaCodec de Android se reproduce demasiado rápido
- Android SurfaceView no muestra onDraw
- Cómo reanudar MediaPlayer en Android después de presionar el botón de inicio y volver a abrir la aplicación
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
- ¿Cómo tomar una captura de pantalla de la vista de superficie de Android?
- Android SurfaceView causando parpadeo de la pantalla
- Android: problema SurfaceView (anchura, altura)
- Cómo capturar la imagen de CameraView personalizado en Android?
- Anular onDraw () o draw ()?
- ¿Puedo usar lockCanvas () en onPreviewFrame callback?
- Cámara Android: la vista previa se amplía al grabar vídeo
- Ajuste de una vista previa de la cámara a un SurfaceView más grande que la pantalla
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();
- Tocar el campo de formulario en WebView no muestra el teclado virtual
- Android WebView no carga una URL HTTPS