Pagi ini saya muncul dengan masalah mencoba menangani onConfigurationChanged
acara tersebut. Masalahnya adalah bahwa metode, yang saya timpa, tidak dipanggil ketika saya mengubah orientasi telepon. Tidak dipanggil sama sekali.
Saya telah menggunakan android:configChanges="orientation"
aktivitas yang didefinisikan dalam manifes sebagaimana disebutkan pada dokumentasi android, tetapi ini tidak membuat perbedaan.
Sudahkah Anda menemukan masalah ini?
android:configChanges
Inilah yang dikatakan google javadoc:Note: If your application targets API level 13 or higher (as declared by the minSdkVersion and targetSdkVersion attributes), then you should also declare the "screenSize" configuration, because it also changes when a device switches between portrait and landscape orientations.
Jawaban:
Ini adalah gremlin saya untuk ~ masalah yang sama:
(Dari http://developer.android.com/guide/topics/resources/runtime-changes.html )
TL; DR: tambahkan "| screenSize" ke configChanges saat menargetkan API level 13+
sumber
+1
dari sisi saya"screenSize"
itu.Beberapa perangkat 4.0 tidak memanggilConfigurationChanged. Cukup tambahkan pendengar ke screenSize juga.
sumber
onConfigurationChanged
, mengujiConfiguration.ORIENTATION_LANDSCAPE
, dan termasuk HANYAandroid:configChanges="orientation"
dalam manifes tidak cukup untuk tablet Nexus 7 saya. Terima kasihMasalahnya adalah jika Anda menggunakan metode ini
untuk memaksa orientasi Anda
Activity
ke mode potret, Anda bukan kandidat yang akan menerimaorientation
perubahan.Jadi solusinya adalah tidak
setRequestOrientation
ke mode tertentu. Namun alih-alih gunakanSCREEN_ORIENTATION_SENSOR.
sumber
onConfigChanged
juga, ketika pengguna memutar teleponnya. Perilaku yang sama seperti di aplikasi youtube. Ini mungkin?periksa apakah perangkat Anda memiliki pengaturan "Rotasi layar" AKTIF
sumber
android:screenOrientation
dalamActivity
atau dalam aApplication
tingkat.android:configChanges="orientation|keyboardHidden"
sebagai gantinya.sumber
Saya menghabiskan waktu puluhan menit untuk mencari tahu mengapa itu tidak berhasil. saya tambahkan
screenSize
tetapi masih tidak berhasil.Ternyata saya telah menambahkan
android:configChanges
ke<application>
elemen, bukan ke<activity>
elemen seperti yang seharusnya!Tentu saja, ini adalah kesalahan saya, tetapi kita semua tahu bahwa kita semua menghabiskan banyak waktu untuk kesalahan konyol semacam ini. Jadi, saya menambahkan jawaban ini untuk berjaga-jaga kalau-kalau harus ada programmer konyol lain seperti saya.
sumber
Macarse 100% uang dengan opsi ke-2.
Mencoba
android:configChanges="orientation|keyboardHidden|screenSize"
Saya memiliki masalah yang sama persis, dan pada emulator 1.6 menambahkan
keyboardHidden
penyebabonConfigurationChanged
dipanggil selama rotasi. Hapus dan berhenti dipanggil.sumber
Saya memiliki masalah yang sama -
onConfigurationChanged
tidak dipanggil saat perangkat mengubah orientasi meskipun adaandroid:configChanges="orientation|keyboardHidden"
dalam file manifes. Saya menggunakan potongan kode yang dibagikanDeva
di siniorientasi tidak berfungsi di 2.3.3?
untuk memeriksa apakah
onConfigurationChanged
sedang dipanggil. Bukan itu.Setelah beberapa jam bereksperimen, saya menyadari bahwa saya memiliki baris berikut dalam file manifes
dan saat berganti
android:targetSdkVersion="15"
keandroid:targetSdkVersion="8"
,onConfigurationChanged
mulai dipanggil. Jadi, bagian dari manifes akhirnya terlihat seperti inisumber
attribute: screensize
'? Mungkin bermanfaat jika ada lebih banyak rincian yang diberikan.Saya baru saja menemukan itu jika Anda memiliki:
dalam manifes, onConfigurationChanged () tidak akan dipanggil juga ...
ini mungkin mirip dengan:
orientasi pengaturan itu memblokir onConfigurationChanged ().
sumber
Jangan gunakan versi target SDK apa pun untuk membuat Anda kesulitan. dan untuk semua level api gunakan ini sebagai pendengar perubahan konfigurasi
sumber
Tidak yakin ini adalah tempat terbaik untuk itu, tetapi dalam menghadapi masalah ini - saya mengamati sesuatu yang menarik.
Jika pendengar onConfigurationChanged () TIDAK berfungsi, maka onCreate () dipanggil lagi setiap kali orientasi diubah.
Jika pendengar onConfigurationChanged () berfungsi, maka metode itu disebut sebagai ganti onCreate () ketika orientasi berubah.
sumber
Semua solusi tidak berfungsi, saya mencoba untuk menghapus aktivitas tema saya di file manifes Android. Sangat aneh
sumber
Tidak ada saran yang bekerja untuk saya (saya telah bereaksi proyek asli dengan masalah ini), tetapi setelah berjam-jam debug saya menemukan bahwa jika Anda memiliki baris ini di AppTheme of styles.xml
maka aplikasi tidak akan berputar.
sumber
@ thanhbinh84 Memberi saya ide apa yang menyebabkan ini.
Menghapus
<item name="android:windowIsTranslucent">true</item>
dari tema saya di styles.xml memperbaikinya!sumber
Saya memiliki masalah yang sama dan saya memiliki "android: screenOrientation" dan "android: configChanges" yang ditentukan dalam manifes. Ketika saya menghapus yang pertama, onConfigurationChanged () dipanggil rotasi. Aneh tapi itu wajan)
sumber
Sudahkah Anda mendapatkan
android.content.res.Configuration
laporan impor? Eclipse dapat memasukkan impor secara otomatis jika Anda menekanCtrl+Shift+O
.Jika itu hilang, kompiler tidak akan dapat mengenali bahwa Anda mengganti metode superclass secara sah sehingga akan menimbulkan kesalahan.
sumber