2011-11-11 80 views
3

我已經發布了這個問題安卓:屏幕方向變化

http://www.devx.com/wireless/Article/40792/1954

Saving Android Activity state using Save Instance State

http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html

How to save state during orientation change in Android if the state is made of my classes?

我沒有得到見過以下鏈接保存應用程序狀態我應該如何覆蓋以下功能:

@Override 
    public Object onRetainNonConfigurationInstance() { 
     return someExpensiveObject; 
    } 

在我的應用我有一個editext可見光和其他佈局editext獲得可見當第一editext的數據驗證,以真實的。我已經將所有其他editextes和textviews假的visbility,讓他們後可見證實。

因此,在我的活動中,如果屏幕方向改變,那麼所有具有android:visibility="false"的項目都不可見。

我也才知道,當我們的活動,屏幕方向改變它調用的onStop()之後的onDestroy(),然後再通過調用的onCreate開始一個新的活動()

這就是原因。但我沒有得到如何解決呢..

在這裏你可以看到我的應用程序的截圖:

enter image description here 在此圖像中的所有字段都加載 而在另一個圖像時,屏幕方向改爲景觀他們是一個LL不見了

enter image description here

任何連結教程或一段代碼將是非常明顯的。

而且我的應用程序崩潰時,進度對話框顯示出來,我試圖改變屏幕orientation.How處理這??

感謝

+0

關於如何處理使用保存的實例狀態包檢查活動狀態的很好的教程http://www.quicktips.in/handling-activity-state-using-saved-instance-state-bundle/ –

回答

7

那麼如果你有兩個屏幕相同layout那麼就沒有必要這麼做只是添加下面一行在你manifestActivity節點

android:configChanges="keyboardHidden|orientation" 

爲Android 3.2(API級別13)和更新:

android:configChanges="keyboardHidden|orientation|screenSize" 

因爲「屏幕尺寸」也會在設備在肖像和landsc之間切換時發生變化猿定位。文檔在這裏:http://developer.android.com/guide/topics/manifest/activity-element.html

+0

感謝您的回覆和它爲我工作...那麼,這個'onRetainNonConfigurationInstance()'函數用於? – Shruti

+0

+1確切的捕獲。 –

+0

@Shruti它使用,如果你有不同的佈局文件,你必須保存數據的佈局更改,因爲佈局交換在這種情況下 – ingsaurabh

1

還有另一種可能性,即使在使用onConfigurationChanged(Configuration newConfig)進行方向更改時,也可以使用它來保持狀態。

當您的活動正在運行時設備配置發生變化時由系統調用。請注意,只有在您選擇的配置中您想要使用清單中的configChanges屬性進行處理時纔會調用它。如果發生任何未被該屬性選擇報告的配置更改,則不會報告該系統,系統將停止並重新啓動活動(使其通過新配置啓動)。

在調用此函數時,您的Resources對象將被更新爲返回與新配置匹配的資源值。