Saya mendapatkan Kesalahan
Unable to start activity ComponentInfo{de.androidbuch.activiti/de.androidbuch.activiti.task.Activity}: android.view.InflateException: Binary XML file line #11: Error inflating class fragment
ketika saya beralih melalui potret dan mode lansekap. Saya menggunakan fragmen. Xml saya adalah:
<LinearLayout android:id="@+id/mainLayout"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ListView android:id="@+id/android:list"
android:layout_height="wrap_content"
android:layout_width="fill_parent"/>
<fragment android:id="@+id/fragmentDetails"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
class="de.androidbuch.activiti.task.TaskDetailsFragment"/>
</LinearLayout>
Jika saya beralih melalui mode landscape dan portrait semuanya bekerja dengan baik. Tetapi ketika saya mengklik fragmen saya (dan saya bisa melihat fragmen saya) dan kemudian beralih ke mode lain saya mendapatkan kesalahan. Ada yang tahu bagaimana saya bisa menyelesaikannya? Menemukan beberapa jawaban di sini tetapi tidak ada yang membantu saya ...
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): FATAL EXCEPTION: main
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): java.lang.RuntimeException: Unable to start activity
ComponentInfo{de.androidbuch.activiti/de.androidbuch.activiti.task.Activity}: android.view.InflateException: Binary XML file line #11: Error inflating class fragment
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3097)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.app.ActivityThread.access$1600(ActivityThread.java:123)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:997)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.os.Handler.dispatchMessage(Handler.java:99)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.os.Looper.loop(Looper.java:126)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.app.ActivityThread.main(ActivityThread.java:3998)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at java.lang.reflect.Method.invokeNative(Native Method)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at java.lang.reflect.Method.invoke(Method.java:491)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at dalvik.system.NativeStart.main(Native Method)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class fragment
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:688)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.view.LayoutInflater.rInflate(LayoutInflater.java:724)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.view.LayoutInflater.inflate(LayoutInflater.java:391)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.view.LayoutInflater.inflate(LayoutInflater.java:347)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:227)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.app.Activity.setContentView(Activity.java:1771)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at de.androidbuch.activiti.task.TaskActivity.onCreate(TaskActivity.java:83)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): ... 12 more
Jawaban:
Seperti yang dikatakan hdemirchian, pastikan untuk menggunakan:
Dan juga pastikan bahwa Aktivitas yang menggunakan fragmen meluas,
FragmentActivity
bukan yang biasaActivity
,untuk mendapatkan
FragmentActivity
kelas.sumber
Pengecualian
android.view.InflateException: Binary XML file line: #... Error inflating class fragment
mungkin terjadi jika Anda memanipulasi dengangetActivity()
bagian dalam Anda sebelumonActivityCreated()
dipanggil. Dalam kasus seperti itu, Anda menerima referensi aktivitas yang salah dan tidak dapat mengandalkan itu.Misalnya pola berikutnya salah:
Pola yang benar # 1
Pola yang benar # 2
sumber
getActivity()
dalamonActivityCreated()
atau dalam metode siklus hidup berikutnya, tetapi sebelumnyaonDestroyView()
.Pastikan Anda
Activity
meluasFragmentActivity
.sumber
Saya memiliki kesalahan yang sama. Saya menggali sepanjang hari, tidak tahu tetapi saya pikir saya mencoba ~ 25 solusi untuk masalah ini. Tidak ada yang bekerja sampai jam 2 pagi saya menemukan bahwa saya kehilangan baris ini di aplikasi manifest xml:
Baris itu ada di dalam
<application>
tag. Saya benar-benar berharap ini membantu seseorang. GL.sumber
Saya memiliki masalah yang sama. Solusi bagi saya adalah urutan super.onCreate dan setContentView dalam FragmentActivity
Pesanan berikut berfungsi dengan baik:
sumber
super
harus selalu dipanggil di awal metode.super.method()
harus dipanggil dulu. Itu tergantung pada apa metode kelas super lakukan. Dalam kasusFragmentActivity
itu diperlukan inisialisasi beberapa untuk membuatsetContentView
bekerja dengan benar. Namun dalam metode lain (katakanlahonKeyUp
) Anda mungkin ingin melakukan beberapa pekerjaan dengan tindakan, tapi mundur kesuper.onKeyUp
dalam kasus yang Anda mungkin ingin meneleponsuper.onKeyUp
di akhir fungsi.super()
(konstruktor superclass) harus menjadi fungsi pertama yang dipanggil dalam konstruktor kelas anak apa pun, namun menyebutnya tidak harus wajib (itu akan tergantung sepenuhnya pada kelas yang diperluas).Fragmen tidak dapat disarangkan dalam XML
Pelajari ini dengan cara yang sulit - jika Anda membuat
<fragment>
tag berbasis tata letak XML di dalam fragmen (berpotensi) yang dimuat secara dinamisFragmentManager
, maka Anda mulai mendapatkan kesalahan aneh, mencoba mengembang xml fragmen Anda.Ternyata, ini tidak didukung - itu akan berfungsi dengan baik jika Anda melakukan ini melalui
FragmentManager
pendekatan semata .Saya mendapatkan masalah ini karena saya mencoba memuat sebuah fragmen di dalam
<DrawerLayout>
dari xml, dan ini menyebabkan crash padaonCreateView()
metode ketika saya membuka tumpukan belakang.sumber
appcompat-v7:23.3.0
<fragment>
dengan yang<frameLayout>
berfungsi. Saya masih mencari tahu. - stackoverflow.com/a/19167009/5477548Saya mengalami masalah yang sama seperti yang Anda hadapi. Tidak ada tips di atas yang membantu saya. Kemudian, saya menemukan bahwa yang harus saya lakukan adalah memperbaiki impor dari:
untuk:
sumber
Sudahkah Anda mencoba:
sumber
Pastikan tidak ada pengecualian yang dimunculkan dalam metode onCreateView dari fragmen. Jika ada pengecualian yang dimunculkan dalam metode ini, logcat tidak akan menampilkan detail eksepsi yang tepat, melainkan selalu menampilkan pesan:
sumber
Jika Anda
TaskDetailsFragment
memperpanjangandroid.app.Fragment
, lakukan perubahanonCreateView()
.Kembalikan tampilan yang ingin Anda tampilkan di Fragmen atau konversikan Tata Letak Anda untuk dilihat dengan menggunakan LayoutInflater dan kembalikan.
Semoga ini berhasil. :)
sumber
Periksa path kelas Anda, ini bisa jadi tampilan inflator tidak dapat menemukan definisi kelas Anda sebagaimana didefinisikan dalam kelas xml Anda = "de.androidbuch.activiti.task.TaskDetailsFragment" jalur di atas bisa salah.
sumber
Saya menerima kesalahan ini karena berbagai alasan.
Langkah-langkah mereproduksi:
~> Masalah saya adalah saya membuat aplikasi kosong baru.
~> Saya kemudian membuat fragmen khusus dari File ~> Menu File Baru.
~> Dilanjutkan untuk menyesuaikan fragmen dengan menambahkan tata letak dan tombol dll.
~> Merujuk fragmen khusus baru di activity_my.xml yang dibuat secara otomatis yang dibuat untuk saya saat membuat aplikasi. Melakukan hal ini memungkinkan XML untuk menghasilkan objek untuk saya.
Heres adalah tangkapan ketika membuat fragmen khusus melalui File ~> Menu File Baru, ia secara otomatis menghasilkan fungsi fungsi rintisan dan menempatkannya di bagian bawah file kelas fragmen.
Ini berarti bahwa kelas MyActivity Anda harus mengimplementasikan antarmuka ini. Jika tidak maka kesalahan di atas hanya terjadi ketika mereferensikan fragmen dari xml. Dengan menghapus referensi untuk Fragmen di XML sepenuhnya, dan membuat fragmen melalui kode di file kelas MyActivity.java Logcat menghasilkan kesalahan yang lebih ringkas menjelaskan masalah secara rinci dan mengeluh tentang antarmuka. Ini ditunjukkan dalam Kegiatan Template Proyek + Fragmen. Meskipun, <~ Template Proyek itu tidak menghasilkan rintisan antarmuka.
sumber
Bagi saya itu setelah menggulir jejak stack saya menemukan saya kehilangan izin untuk android.permission.ACCESS_NETWORK_STATE
setelah menambahkan izin ini diperbaiki
sumber
Jika Anda memiliki file tata letak terpisah untuk mode potret dan lansekap dan mendapatkan kesalahan inflasi setiap kali Anda mengubah orientasi setelah mengklik item, kemungkinan besar ada perbedaan antara file tata letak Anda.
Ketika Anda mendapatkan kesalahan, apakah itu hanya ketika Anda mengklik item dalam mode lansekap atau hanya dalam mode potret atau keduanya? Apakah aktivitas TaskDetailsFragment Anda menggunakan file tata letak yang dapat memiliki perbedaan antara mode landscape dan portrait?
sumber
Jika Anda menambahkan
Fragment
secara statis yaitu, dalam xml, maka Anda mungkin telah gagal mengimplementasikannyaOnFragmentInteractionListener
diActivity
kelas Anda . Maka implementasi antarmuka akan menyelesaikan masalah. Jika Anda menambahkanFragment
secara dinamis, yaitu di kelas java maka ini bukan solusinya. Karena IDE sendiri tidak akan memungkinkan Anda untuk melanjutkan tanpa mengimplementasikan antarmuka yang diperlukan.sumber
Masalah saya dalam kasus ini adalah contoh sederhana memiliki pengecualian null pointer bodoh di salah satu metode saya yang kemudian dipanggil dalam siklus hidup. Ini menyebabkan pengecualian "Kesalahan menggembungkan fragmen kelas" bagi saya. Singkatnya, harap ingat untuk memeriksa lebih jauh ke bawah jejak tumpukan pengecualian untuk kemungkinan penyebabnya.
Setelah saya menyelesaikan pengecualian pointer nol, fragmen saya dimuat dengan baik.
sumber
Tidak ada solusi yang disebutkan di atas yang membantu saya. Dalam log saya bisa menemukan detail pengecualian seperti yang disebutkan di bawah ini:
Saya melakukan ini dan kode saya berfungsi!
sumber
Jika Anda tidak ingin mengubah apa pun dan pergi dengan tag " fragmen "
melakukan hal ini,
sumber
Memiliki jenis kesalahan yang sama, di mana pesan kesalahan yang sama persis di logcat ditampilkan. Saya perlu membuat perubahan di Java Build Path yang terletak di bawah
Project->Properties
. Saya telah memasukkan perpustakaan terkait Google Maps sepertiandroid-support-v4.jar
dangoogle-play-services.jar
; Namun saya hilang termasuk ini di'Build class path'
dalam'Order and Export'
menu opsi. Mungkin kesalahannya ada di sini.Coba sertakan perpustakaan ke jalur kelas build.
Urutan kelas-kelas yang dibangun mungkin juga memicu kesalahan, jadi saran saya adalah juga mencoba untuk mengatur ulang urutan jalur bangunan. Kesalahan menghilang ketika saya menggunakan urutan sebagai berikut:
'my_project_name/src'->'my_project_name/gen'->'Android Private Libraries'
. Unit terakhir berisi file jar yang disebutkan sebelumnya.sumber
Dalam file xml Anda, gunakan saja bukan tag. Inflater mencoba membuat android.app.Fragment yang akan gagal pada API <10. Jadi, Anda perlu membuat grup tampilan dari jenis yang berbeda.
sumber
Saya mendapatkan kesalahan ini saat menggunakan ListFragment tetapi id tampilan daftar adalah listView1 bukan daftar.
'Konten Anda harus memiliki ListView yang atribut id-nya adalah' android.R.id.list ''
http://developer.android.com/reference/android/app/ListFragment.html
sumber
pastikan kamu telah menggunakan yang ini
bukan ini..
sumber
Baru saja mengalami kesalahan yang sama. Alasan saya adalah visibilitas kelas fragmen saya. Itu diatur ke default, harus publik.
sumber
Bisakah Anda memposting fragmen
onCreate
danonCreateView
metode? Saya memiliki pengecualian yang persis sama yang disebabkan oleh pengecualian dalamonCreate
metode fragmen , ketika saya memperbaiki masalah itu memperbaiki kesalahan menggembungkan fragmen kelas.sumber
Saya menerima kesalahan ini di android studio masalahnya adalah bahwa fragmen saya memiliki tata letak relatif sementara kode pada fungsi OnCreateView adalah
apakah kode Anda melakukan hal yang sama?
sumber
Jika Anda ingin mewarisi AppCompatActivity , maka Anda dapat melakukan sesuatu seperti ini- Dalam aktivitas xml, gunakan FrameLayout seperti ini-
dan dalam aktivitas
onCreate
-sumber
Saya mendapat kesalahan yang sama, tetapi masalah saya adalah bahwa fragmen saya tidak memiliki id di tata letak xml dari aktivitas induk.
sumber
Setelah satu hari berjuang saya menemukan beberapa pemeriksaan skenario mungkin Anda hadapi sama,
Catatan - jangan menambahkan dua kunci dalam file manifes menghapus kunci peta
kode di atas dan tambahkan kode ini.
sumber
Saya memiliki masalah yang sama; setelah menjalankan contoh AdMob , saya mencoba memasukkan Iklan di aplikasi saya, menyebabkan kesalahan ini:
Solusinya adalah: Anda tidak dapat memasukkan fragmen untuk Iklan ke dalam ListActivity. Sebagai gantinya, saya bisa menambahkannya ke FragmentActivity dan ke ActionBarActivity tanpa masalah.
Saran saya adalah: mulai dari contoh AdMob dan tambahkan ke dalamnya aplikasi Anda yang sudah ada: Saya akan menghemat banyak waktu !!!
sumber
Jika Anda menggunakan kebingungan dengan komponen Navigasi, Anda harus mengecualikan fragmen android dan argumen Anda. Tambahkan baris ini ke file aturan proguard Anda:
sumber