Intereting Posts
Javascript console.log () на устройствах HTC Android и adb logcat Как исключить из ретентатов экспортированную деятельность? Как вызвать локальный веб-сервис из мобильного приложения Android Android: В чем разница между Activity.runOnUiThread и View.post? Тип сборки не является ошибкой jni debuggable Выключение мягкой клавиатуры Зарегистрировать локальную трансляцию внутри пользовательского представления Когда следует getItemPosition рассматривать изменения позиции позиции? Для запуска Eclipse должна быть доступна Java Runtime Environment (JRE) или Java Development Kit (JDK) Экран блокировки телефона Android приводит к нескольким последующим событиям onPause / onResume Ошибка: пакет javax.annotation не существует после обновления до lombok 1.16.2 Как превратить объем в max программно на Android? Ионный номер телефона пользователя AdjustResize не работает в леденец и выше с полупрозрачным статусом / Nav Как отобразить GIF в приложении для Android-приложения с поддержкой Android?

Java.lang.IllegalStateException: указанный ребенок уже имеет родительский

Я использую фрагменты, когда я создаю фрагмент в первый раз. Но во второй раз я получил это исключение. Я не мог найти строку, где я получил ошибку?

04-04 08:51:54.320: E/AndroidRuntime(29713): FATAL EXCEPTION: main 04-04 08:51:54.320: E/AndroidRuntime(29713): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.view.ViewGroup.addViewInner(ViewGroup.java:3013) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.view.ViewGroup.addView(ViewGroup.java:2902) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.view.ViewGroup.addView(ViewGroup.java:2859) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.view.ViewGroup.addView(ViewGroup.java:2839) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.support.v4.app.NoSaveStateFrameLayout.wrap(Unknown Source) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.support.v4.app.BackStackRecord.run(Unknown Source) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.support.v4.app.FragmentManagerImpl.execPendingActions(Unknown Source) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.support.v4.app.FragmentManagerImpl$1.run(Unknown Source) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.os.Handler.handleCallback(Handler.java:587) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.os.Handler.dispatchMessage(Handler.java:92) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.os.Looper.loop(Looper.java:132) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.app.ActivityThread.main(ActivityThread.java:4126) 04-04 08:51:54.320: E/AndroidRuntime(29713): at java.lang.reflect.Method.invokeNative(Native Method) 04-04 08:51:54.320: E/AndroidRuntime(29713): at java.lang.reflect.Method.invoke(Method.java:491) 04-04 08:51:54.320: E/AndroidRuntime(29713): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) 04-04 08:51:54.320: E/AndroidRuntime(29713): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 04-04 08:51:54.320: E/AndroidRuntime(29713): at dalvik.system.NativeStart.main(Native Method) 

Вот что я делаю, когда нажимаю на элемент моего фрагмента списка.

 // If we are not currently showing a fragment for the new // position, we need to create and install a new one. RouteSearchFragment df = RouteSearchFragment.newInstance(index); // Execute a transaction, replacing any existing fragment // with this one inside the frame. FragmentTransaction ft = fragmentManager.beginTransaction(); ft.replace(R.id.details_full, df); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.commit(); 

В первый раз Ok, я щелкаю element2 из списка, это также нормально; Но когда я возвращаюсь к элементу1, я получил эту ошибку.

Всем спасибо!

Solutions Collecting From Web of "Java.lang.IllegalStateException: указанный ребенок уже имеет родительский"

Когда вы переопределяете OnCreateView в вашем классе RouteSearchFragment , у вас есть

 if(view != null) { return view; } 

Сегмент кода?

Если это так, удаление оператора return должно решить вашу проблему.

Извините, что опубликовал старый вопрос, но я смог исправить его, используя совершенно другое решение. Я получал это исключение, но я изменил первую строку переопределения onCreatView:

 View result = inflater.inflate(R.layout.customer_layout, container); 

…к этому:

 View result = inflater.inflate(R.layout.customer_layout, container, false); 

Я понятия не имею, почему, но используя переопределение, которое принимает логическое значение, поскольку третий параметр зафиксировал его. Я думаю, что он сообщает Фрагменту и / или Деянию не использовать «контейнер» в качестве родителя вновь созданного представления. НТН!

Я сталкиваюсь с этой проблемой много раз. Добавьте следующий код для решения этой проблемы:

 @Override public void onDestroyView() { super.onDestroyView(); if (view != null) { ViewGroup parentViewGroup = (ViewGroup) view.getParent(); if (parentViewGroup != null) { parentViewGroup.removeAllViews(); } } } 

благодаря

Если у вас есть это заявление ..

 View view = inflater.inflate(R.layout.fragment1, container);//may be Incorrect 

Тогда попробуйте это. Добавьте false как третий аргумент. Может быть, это может помочь ..

 View view = inflater.inflate(R.layout.fragment1, container, false);//correct one 

У меня был этот код в фрагменте, и он сбой, если я попытаюсь вернуться к этому фрагменту

 if (mRootView == null) { mRootView = inflater.inflate(R.layout.fragment_main, container, false); } 

После сбора ответов на эту тему, я понял, что у родителя mRootView все еще есть mRootView как дочерний. Итак, это было мое решение.

 if (mRootView == null) { mRootView = inflater.inflate(R.layout.fragment_main, container, false); } else { ((ViewGroup) mRootView.getParent()).removeView(mRootView); } 

надеюсь это поможет

Это также происходит, когда представление, возвращаемое onCreateView (), не является раздутым представлением.

Пример:

 View rootView = inflater.inflate(R.layout.my_fragment, container, false); TextView textView = (TextView) rootView.findViewById(R.id.text_view); textView.setText("Some text."); return textView; 

Fix:

 return rootView; 

Вместо:

 return textView; // or whatever you returned 

У меня была эта проблема и я не мог ее решить в Java-коде. Проблема была в моем xml.

Я пытался добавить textView в контейнер, но обернул textView внутри LinearLayout.

Это был исходный файл xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceListItemSmall" android:gravity="center_vertical" android:paddingLeft="16dp" android:paddingRight="16dp" android:textColor="#fff" android:background="?android:attr/activatedBackgroundIndicator" android:minHeight="?android:attr/listPreferredItemHeightSmall"/> </LinearLayout> 

Вы добавляете представление в layout , но представление уже находится в другом layout . Вид не может находиться в нескольких местах.

Это решение может помочь:

 public class FragmentItem extends Android.Support.V4.App.Fragment { View rootView; TextView textView; public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (rootView != null) { ViewGroup parent = (ViewGroup)rootView.Parent; parent.RemoveView(rootView); } else { rootView = inflater.Inflate(Resource.Layout.FragmentItem, container, false); textView = rootView.FindViewById<TextView>(Resource.Id.textViewDisplay); } return rootView; } }