Saya menggunakan fragmen, saat saya membuat instance fragmen untuk pertama kali. tapi kedua kalinya saya mendapat pengecualian ini. Saya tidak dapat menemukan baris di mana saya mendapatkan kesalahan?
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)
Inilah yang saya lakukan ketika saya mengklik elemen dari fragmen daftar saya.
// 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();
Pertama kali ok, saya klik elemen2 dari daftar, juga ok; tetapi ketika saya kembali ke elemen1 saya mendapat bug ini.
Terimakasih semuanya!
android
android-layout
android-fragments
haythem souissi
sumber
sumber
Jawaban:
Saat Anda mengganti
OnCreateView
diRouteSearchFragment
kelas, apakah Anda memilikisegmen kode?
Jika demikian, menghapus pernyataan pengembalian seharusnya menyelesaikan masalah Anda.
Anda bisa menyimpan kode dan mengembalikan tampilan jika Anda tidak ingin membuat ulang data tampilan, dan metode onDestroyView () Anda menghapus tampilan ini dari induknya seperti ini:
sumber
return inflater.inflate(R.layout.fragment_search, container);
denganreturn inflater.inflate(R.layout.fragment_search, container, false);
Maaf memposting ke pertanyaan lama tetapi saya dapat memperbaikinya menggunakan solusi yang sama sekali berbeda. Saya mendapatkan pengecualian ini tetapi saya mengubah baris pertama penggantian onCreatView saya dari ini:
...untuk ini:
Saya tidak tahu mengapa tetapi menggunakan override yang menerima boolean sebagai param ketiga memperbaikinya. Saya pikir ini memberitahu Fragment dan / atau Activity untuk tidak menggunakan "container" sebagai induk dari View yang baru dibuat.
sumber
Saya telah menghadapi masalah ini berkali-kali. Harap tambahkan kode berikut untuk mengatasi masalah ini:
Terima kasih
sumber
Jika Anda memiliki pernyataan ini ..
Kalau begitu coba ini .. Tambahkan salah sebagai argumen ketiga .. Semoga bisa membantu ..
sumber
Saya memiliki kode ini dalam sebuah fragmen dan itu macet jika saya mencoba kembali ke fragmen ini
setelah mengumpulkan jawaban di utas ini, saya menyadari bahwa orang tua mRootView masih memiliki mRootView sebagai anak. Jadi, inilah perbaikan saya.
semoga ini membantu
sumber
Ini juga terjadi saat tampilan yang dikembalikan oleh onCreateView () bukan tampilan yang digelembungkan.
Contoh:
Memperbaiki:
Dari pada:
sumber
Saya punya masalah ini dan tidak bisa menyelesaikannya dalam kode Java. Masalahnya ada pada xml saya.
Saya mencoba menambahkan textView ke wadah, tetapi telah membungkus textView di dalam LinearLayout.
Ini adalah file xml asli:
Sekarang dengan LinearLayout dihapus:
Ini sepertinya tidak banyak bagi saya tetapi berhasil, dan saya tidak mengubah kode Java saya sama sekali. Semuanya ada di xml.
sumber
Anda menambahkan
View
ke dalamlayout
, tetapi Tampilan sudah ada di yang lainlayout
. Tampilan tidak boleh di lebih dari satu tempat.sumber
Solusi ini dapat membantu:
sumber
Aku dipecahkan dengan menetapkan
attachToRoot
dariinflater.inflate()
kefalse
.sumber
di file xml Anda, Anda harus mengatur layout_width dan layout_height dari wrap_content ke match_parent. itu sudah diperbaiki untuk saya.
sumber