今天早上我想出了一個問題,試圖處理onConfigurationChanged
事件。問題是,當我改變手機方向時,我重寫的方法沒有被調用。根本沒有打電話。onConfigurationChanged沒有被調用
我已經把android:configChanges="orientation"
放在android文檔中提到的清單中定義的活動上,但這並沒有什麼區別。
你想出了這個問題嗎?
今天早上我想出了一個問題,試圖處理onConfigurationChanged
事件。問題是,當我改變手機方向時,我重寫的方法沒有被調用。根本沒有打電話。onConfigurationChanged沒有被調用
我已經把android:configChanges="orientation"
放在android文檔中提到的清單中定義的活動上,但這並沒有什麼區別。
你想出了這個問題嗎?
的問題是,如果你使用這種方法
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
強迫你Activity
到肖像模式的方向,你沒有候選人獲得orientation
變化。
所以解決辦法是不要setRequestOrientation
到一個特定的模式。但使用SCREEN_ORIENTATION_SENSOR.
是的,這工作,但如果我不希望我的應用程序旋轉?我希望它保持橫向模式。 – stoefln 2011-12-10 14:27:17
您必須指定
您在導入語句中是否有android.content.res.Configuration
?如果按Ctrl+Shift+O
,Eclipse可以自動插入導入。
如果缺少,編譯器將無法識別出您合法地覆蓋了超類方法,因此會拋出錯誤。
Activity
或在Application
級使用android:screenOrientation
。android:configChanges="orientation|keyboardHidden"
。如何使用android:screenOrientation,我想onConfigurationChanged方法運行,我能做什麼,thx – Bingchean 2015-06-09 02:27:13
明顯是他的第二選項100%的錢。
嘗試android:configChanges="orientation|keyboardHidden|screenSize"
我有完全一樣的問題,並在1.6模擬器加keyboardHidden
導致onConfigurationChanged
旋轉過程中被調用。刪除它並停止被叫。
小修正screenSize(注意大寫。) – pahan 2013-03-31 06:16:26
我有同樣的問題,我有清單中指定的「android:screenOrientation」和「android:configChanges」。當我刪除第一個,onConfigurationChanged()被調用旋轉。奇怪,但它炒菜鍋)
但是,您如何旋轉呢? – 2014-01-13 14:18:33
這是我的〜同樣的問題精怪:
注意:從Android 3.2開始(API等級13),「屏幕尺寸」 也改變時之間的設備切換肖像和風景 方向。因此,如果要在開發API級別13或更高級別(由minSdkVersion和targetSdkVersion屬性聲明的 )時爲 方向更改而阻止運行時重新啓動,則 除「方向」外還必須包含「screenSize」值爲 。也就是說,你必須decalare android:configChanges =「orientation | screenSize」。但是,如果您的 應用程序的目標級別爲12或更低,則您的活動始終會自行處理此配置更改(即使在更高版本的Android 3.2或更高版本的設備上運行此配置更改 也不會重新啓動您的活動)。
(從http://developer.android.com/guide/topics/resources/runtime-changes.html)
TL; DR:添加 「|屏幕尺寸」 來configChanges目標API等級13+
,當我有同樣的問題 - onConfigurationChanged
當設備改變方向不叫儘管在清單文件中有android:configChanges="orientation|keyboardHidden"
。我用的代碼共享的文檔片斷通過Deva
這裏
orientation is not working in 2.3.3?
檢查是否onConfigurationChanged
是被調用。不是。
試驗的幾個小時後,我意識到,我在清單文件
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15"/>
和改變android:targetSdkVersion="15"
到android:targetSdkVersion="8"
以下行,onConfigurationChanged
開始被調用。因此,清單的一部分終於看起來像你的設備具有「屏幕旋轉」設置爲ON
檢查。只需將偵聽器添加到screenSize即可。
android:configChanges="orientation|screenSize"
我有這個有趣的問題...:D – Dharmendra 2013-10-02 17:11:03
即使「屏幕旋轉」選項爲OFF,是否可以旋轉活動?如果是,請告訴我該怎麼做......?根據我的理解,這不起作用,但某些應用程序會將活動旋轉爲風景。 – Srinivasan 2015-12-15 13:55:32
S ** t !!!花了4-5小時試圖讓我的代碼工作!一種重寫這個的方法,正如我從另一個答案中學到的,是在清單中包含
的4.0有些設備不調用onConfigurationChanged這個
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8"/>
我剛剛發現,如果您有:
android:screenOrientation="landscape"
在清單,onConfigurationChanged()不會太叫...
這可能類似於:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
設置方向阻止onConfigurationChanged()。
<uses-sdk android:minSdkVersion="8" android:maxSdkVersion="17" />
不要使用任何目標SDK版本讓你併發症。併爲所有API級別使用它作爲配置變化監聽
android:configChanges="orientation|keyboardHidden|screenLayout"
不知道這是它最好的地方,但在遇到此問題 - 我發現一些有趣的事情。
如果onConfigurationChanged()監聽器不工作,那麼的onCreate()在每次方向改變時再次調用。
如果onConfigurationChanged()聽者正在工作,則該方法被調用,而不是的onCreate()時取向的變化。
這就是我所看到的 - 但我不想成爲。根據文檔,它不應該以這種方式發生。很混亂。 – slycrel 2014-10-09 19:51:29
我花了幾十分鐘找出爲什麼它不起作用。我加了screenSize
,但它仍然沒有工作。
原來,我已經將android:configChanges
添加到<application>
元素,而不是我應該擁有的<activity>
元素!
當然,這是我的錯誤,但我們都知道,我們所有人都花了很多時間來處理這種愚蠢的錯誤。所以,我添加了這個答案,以防萬一有像我這樣的另一個愚蠢的程序員。
所有解決方案都無法正常工作我嘗試在Android清單文件中刪除我的主題活動。所以很奇怪
<activity
android:name="MyActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@style/MyTheme" --> remove this line
/>
<style name="MyTheme" parent="Theme.AppCompat.NoActionBar">
<item name="windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
</style>
@ thanhbinh84給了我一個想法是什麼可能導致這一點。
刪除 <item name="android:windowIsTranslucent">true</item>
從我的主題在styles.xml中修復它!
無的建議,工作對我來說(我不得不作出反應這個問題本地項目),但調試了幾個小時之後,我發現,如果你有這條線在AppTheme styles.xml的
<item name="android:windowIsTranslucent">true</item>
然後該應用程序不會旋轉。
我對android有同樣的問題:configChanges =「keyboardHidden」 - 當軟鍵盤滑入或滑出時,onConfigurationChanged沒有被調用。 – 2011-05-24 07:17:36
鍵盤隱藏不是由軟件鍵盤觸發的,只能通過硬件鍵盤來觸發,就像Droid上的滑動鍵盤一樣。 – nmr 2012-01-18 20:24:46
你應該在'機器人添加「屏幕大小」:configChanges' 這就是谷歌的javadoc說: '注意:如果您的應用程序的目標API級別13或更高版本(由宣稱的minSdkVersion和targetSdkVersion屬性),那麼你還應聲明「screenSize」配置,因爲當設備在縱向和橫向之間切換時它也會發生變化。「# – Ektos974 2014-01-27 16:59:45