2011-06-13 43 views
1

目前我正在對我的應用程序的更新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-landlayout-port

回答

2

更改方位時不需要撥打setContentView。如果您在正確的佈局目錄下使用相同的名稱保存佈局,Android將爲您執行此操作。例如:

res/layout-land/main.xml 
res/layout-port/main.xml 

當您的活動切換方向時,Android會加載正確的佈局。

+0

這並沒有在上述的情況下工作。這在刪除android:configChanges =「keyboardHidden | orientation」時可以工作,但是每次在onCreate中調用setContentView都無法解決問題。 但謝謝你的回答。我已經刪除了這條語句,並按照其他答案中的建議實施了onSaveInstanceState,並添加了這兩個文件夾。 – patrick 2011-06-14 18:07:01

相關問題