2015-01-15 35 views
1

我有一個包含4個元素的活動。包含日期列表的微調框,包含小時列表的微調框,按鈕和列表視圖。微調器的選定項目用於形成一個Web服務URL,當點擊該按鈕並在列表視圖中顯示響應時調用該URL。正在Android上執行屏幕旋轉時停止onCreate

問題是,如果用戶以縱向模式查看應用程序,選擇日期,選擇一個小時並單擊該按鈕,則Web服務調用的響應會顯示在列表視圖中,但是如果設備旋轉到那麼列表視圖中的數據就消失了(因爲爲了得到它,需要點擊按鈕)。

我明白,屏幕旋轉時會調用onCreate。我不想強制方向,所以有什麼辦法可以阻止列表視圖被清除?請注意,我的旋轉器中的選定值在旋轉後保持不變,它只是列表視圖中的響應丟失。

防止活動休閒

回答

2

最簡單的方法把這個在你AndroidManifest

<activity android:name=".YourActivityName" 
        android:configChanges="orientation|keyboardHidden|screenSize"> 

閱讀更多信息 - Supporting Multiple Screens

+0

這真的不是一個好主意,請參閱:http://stackoverflow.com/questions/7818717/why-not-use-always-androidconfigchanges-keyboardhiddenorientation – goetzc 2016-10-12 21:34:59

0

您可以強制活動屏幕方位AndroidManifest.xml通過設置screenOrientation屬性:

<activity android:name=".FooActivity" 
    android:screenOrientation="portrait"/> 

這是一個半解決方案。如果你想處理屏幕旋轉,你應該保存並恢復活動狀態。這是我見過的任何Android應用程序中的主要王室PITA

問題是,您的應用程序邏輯與視圖代碼混合在一起,視圖代碼隨時可能被破壞。 Google!完美結合!這就像運行一個可以在執行過程中消失的函數。 :)

爲了對付這個令人遺憾的設計決定,您可能希望將您的應用程序邏輯移動到服務,這將在屏幕旋轉時不會被破壞。這種2層設計更接近於普遍接受的MVC模式,因爲您將邏輯與視圖分開。服務保留,活動附加和從需求服務分離,使屏幕旋轉處理輕而易舉。

如果您正在處理web服務,請不要嘗試爲此創建自己的解決方案。有好幾個庫可以很好地處理這個問題,例如RoboSpice,你可能永遠不會得到和那些庫一樣好的快速解決方案。試一試。

而且,看這個谷歌I/O視頻有關開發Android REST客戶端應用程序:https://www.youtube.com/watch?v=xHXn3Kg2IQE

0

有你的按鈕設置一個靜態類變量,或共享偏好。然後,調用讀取該值的方法,並執行所需的操作。然後,在onResume()中調用同樣的方法,可能基於一個條件...我認爲這是對我有用的。當您從配置更改或殺死回來時,onResume()應該重新執行您上次完成的任何操作。