2010-09-23 49 views
2

定位更改期間,android是否重用視圖? 我的活動中有一個進度條。我將進度設置爲50%,然後進行方向更改。但由於某種原因,進度條在定位後保持50%。我在我的活動的onCreate()中調用了setprogress(0)。而且我已將'printf'放到任何我稱之爲setProgress()的地方,但我仍然不明白爲什麼每次我進行方向更改時進度欄都保持50%?在定位更改期間,Android是否重用視圖

謝謝你的幫助。

回答

1

你的活動被拆掉重建,但與ID的瀏覽設置保存其實例狀態通過傳遞給onConfigurationChanged將被稱爲他們未來的自我創造後。這在onRestoreInstanceState恢復。由於在onCreate之後調用onRestoreInstanceState,因此在onCreate中設置的值將被先前保存的數據覆蓋。

如果你想在這個步驟發生後操縱你的視圖,onPostCreate可能是你正在尋找的。

如果您想更多地瞭解這個過程是如何工作(可能實現這個保存/在你自己的自定義視圖恢復行爲),見View#onSaveInstanceStateView#onRestoreInstanceState

0

看起來像您正在對manifest文件中包含orientation/keyboardHidden的配置更改禁用onCreate方法。從清單XML中的活動中刪除android:configChanges,並從您的活動中刪除public void onConfigurationChanged(Configuration newConfig)方法。

或者,只是設定進度的0進度在onConfigurationChanged方法

,如果你正在實施onConfigurationChanged方法,請確保您有它所需活性清單XML文件中定義。

例如:

<activity 
     android:name="MyActivity" 
     android:configChanges="orientation|keyboardHidden" /> 

當朝向或keyboardHidden配置發生

+0

我已經超載onConfigurationChanged方法在我的活動,但它永遠不會被調用。我的清單xml文件中沒有任何android:configChanges。 – michael 2010-09-23 20:11:21

+0

好吧,但我想要在發生方向更改時調用onCreate()。我的Manifest文件中沒有android:configChanges。我沒有onConfigurationChanged方法。我的onCreate()函數中有setProgress(0),爲什麼當方向改變時進度條是** not ** empty? – michael 2010-09-23 20:36:42

+0

將相關的代碼和清單添加到您的問題中,或許我們可以通過視覺觀察發生了什麼! – binnyb 2010-09-23 21:19:43

相關問題