我知道這已被問了很多次,但我不能讓這個工作。我使用兩個約束佈局,並且它們之間的切換正常。但是,屏幕上的值會重置,因爲這裏還有其他一百萬個問題。這種行爲看起來非常不一致,因爲我之前在另一個項目中使用過它(它只適用於一項活動,但不適用於另一項活動),但我現在無法使用它。Android的方向,需要保持數據
我運行在Android模擬器我的代碼的Android 7.1.1,API 25
我已經在AndroidManifest.xml
把android:configChanges="keyboardHidden|orientation|screenSize"
在
<activity>
和
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.activity_my_activity_land);
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
setContentView(R.layout.activity_my_activity);
}
}
在我的相關活動。
方向更改和佈局正確加載,但值仍然重置。
我已經看過那些類似的這些問題的答案和許多:
Android activity restarted at orientation change even with configChanges set
Save data and change orientation
什麼辦法可以做到這一點沒有做這樣的建議? (重新創建活動):
https://developer.android.com/training/basics/activity-lifecycle/recreating.html
任何幫助,不勝感激!
非常感謝。雖然這有點沉重。我不想在這個意義上重新創建活動。看到不同的佈局爲不同的方向加載,必須有一種方法,使兩個View中的ID保持一致,以保持其值onConfigurationChanged。我已經自己使用它,並已經看到許多使用上述技術的正確答案。我覺得我必須錯過一些明顯的關於我的具體用途。 – Kyrre
我的意思是你可以以編程方式管理視圖並存儲它,只需在兩個佈局中放置一個佔位符即可。當佈局得到重新創建時,所有的佈局根據方向加載。因此,您只需將之前存儲在視圖中的視圖放在佔位符中即可。你沒有存儲整個活動,只是你不想保留的視圖。 –