我明白想要重複的最佳實踐,但這些答案並不一定能解決問題。我也同意這些最佳做法。不幸的是,他們無法在所有情況下實踐。
我會考慮OP所說的問題是Android中的一個錯誤。說我將在這個活動中處理「configChanges」到Android意味着,如果配置發生變化,請不要終止我的活動。使用「更改」一詞並不意味着傳遞給Activity的初始配置將被Activity忽略。要麼改變措詞,要麼活動應該在原始配置中處理正確的方向。
解決方法是通過手動檢查方向手動選擇適當的佈局文件。實質上,不要在configChanges =「orientation | keyboard | keyboardHidden」的配置中使用-land bucket,則會忽略land bucket。
// done in onCreate
int desiredLayoutId;
int orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
desiredLayoutId = R.layout.some_layout_landscape;
} else {
desiredLayoutId = R.layout.some_layout_portrait;
}
setContentView(desiredLayoutId);
再說一遍,我不喜歡這樣,但如果你是在「不得已而爲之」,並決定於管理自己的方向,你可以按照我提供的,以獲得適當的佈局文件中的代碼。一個可能的用例可能是在創建一個流式視頻的活動時,該視頻不應該在屏幕旋轉時卸載並重新加載。
發佈您的完整清單文件... – 2011-04-06 16:52:28