目前我正在對我的應用程序的更新money is time我遇到了以下問題。我想支持橫向和縱向定位,所以我創建了兩種不同的佈局。沒有數據後調用setContentView()
我的第一個問題是,在輪換後,應用程序重新啓動,並設置刷新的數字。
這是很容易解決找到this question這裏在stackoverflow。
我實現了這個問題了以下解決方案:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setGui();
}
我用下面的代碼,其中車輪的佈局取決於佈局調整進行了測試。再次,所有的作品都應該如此。當我改變方向時,數字不會改變。
public void setGui() {
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
initWheel(R.id.money1, 0, 9, "%1d", moneyWidthPortrait, textSizePortrait);
...
} else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
initWheel(R.id.money1, 0, 9, "%1d", moneyWidthLandscape, textSizeLandscape);
...
}
}
但我也想改變的背景和佈局(填充和利潤),所以我已經添加了以下兩行:
public void setGui() {
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
setContentView(portrait);
...
} else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(landscape);
...
}
}
但調用的setContentView之後的所有數據似乎是在改變手機方向後,再次丟失並且車輪重置爲零。
在定位和佈局更改過程中,最好避免將車輪重置爲「0」?
編輯:編輯答案
後,我已經刪除:
android:configChanges="keyboardHidden|orientation"
並補充說:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putInt("WheelMoney1", getWheelValue(R.id.money1));
...
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
getWheel(R.id.money1).setCurrentItem(savedInstanceState.getInt("WheelMoney1"), false);
...
}
以及處理兩個不同的佈局實施layout-land
和layout-port
。
這並沒有在上述的情況下工作。這在刪除android:configChanges =「keyboardHidden | orientation」時可以工作,但是每次在onCreate中調用setContentView都無法解決問題。 但謝謝你的回答。我已經刪除了這條語句,並按照其他答案中的建議實施了onSaveInstanceState,並添加了這兩個文件夾。 – patrick 2011-06-14 18:07:01