2013-05-21 53 views
0

我有一個靜態文本視圖,它在XML中設置了某個默認值。後來,我將該變量設置爲其他值,但是每當方向更改時,即使我沒有重新初始化,靜態變量的值也會返回到默認值。爲什麼會這樣呢?即使在調用onCreate()之後,該值是否仍然存在?在onCreate()過程中靜態文本視圖會發生什麼()

+0

當方向轉變活動被破壞並重新創建。所以當活動被破壞並重新創建時,變量的值被設置爲默認值。 – Raghunandan

回答

1

onCreate()被調用時,我猜你也打電話setContentView()正常。這將使用默認值重新繪製所有Views。您需要處理配置更改

See this answer of mine如何處理它。推薦的方法是使用onSavedInstanceState但我通常如何處理它自己並沒有任何問題...但

0

這有當你旋轉與lifecycle of an Android app.做,你的應用程序遍歷所有的生命週期方法調用。在發生旋轉後,您需要將當前狀態存儲在Bundle中並在您的onCreate中恢復該數據。

0

在方向更改期間,Android會重新創建所有佈局。要保存窗口小部件的狀態,你可以簡單地分配id到TextView元素:

<TextView 
    android:id="@+id/tv_caption" 
    ... 
/> 
+0

我確定OP是這樣做的,但是這並不能通過簡單地爲它分配一個ID來保存狀態 – codeMagic

+0

啊,對不起。順便說一下,Android會保存指定ID的一些小部件的狀態。但是並非所有具有ID的視圖都能保存其狀態。具有ID的Android小部件(其狀態可由用戶更改)似乎將其狀態保存在軟殺死中。所以EditText保存它的狀態,但TextView不保存它的狀態。我忘了它。 – makovkastar

相關問題