只是讓我清楚,你說你有幾個選項卡,這是使用不同的方向(縱向或橫向),和你是 在切換標籤並正確設置相應的方向時有問題?
針對卡塔的評論:
是的,所以任何時候你旋轉當前可見的活動被破壞,的onCreate又稱爲屏幕(如果我記得的步驟)。你必須做的是調用getCurrentTab(),它返回表示標籤的int值,並在調用onCreate時將其重置爲活動標籤。你可以通過幾種方法做到這一點...要麼有一個小方法來處理,並通過onCreate調用它,或者使用onSaveInstanceState(Bundle)保存當前數據,然後使用onRestoreInstanceState()來重新加載標籤數據。你可以設置一個全局int(int currentTab = 0),不是在onCreate()中設置它,而是在onSaveInstanceState(Bundle)方法中,你可以將它保存到當前標籤(currentTab = getCurrentTab()),然後在onRestoreInstanceState()中,您可以重新設置它。
這有道理嗎?
請,我沒有測試過心思,但願意這樣做,如果你不熟悉這兩個方法調用。
下面是將數據保存到所述束的一個例子 - 也記得的onCreate接受活性束作爲參數。
@Override
public void onSaveInstanceState(Bundle outState){
// Store UI state to the savedInstanceState.
// This bundle will be passed to onCreate on next call.
super.onSaveInstanceState(outState);
String strMinSec = timer.getText().toString();
String strMs = timerMs.getText().toString();
long curElapstedTime = elapsedTime;
boolean timerStopped = stopped;
int orientation = this.getResources().getConfiguration().orientation;
outState.putString("MinSec", strMinSec);
outState.putString("Ms", strMs);
outState.putLong("Elapsed", elapsedTime);
outState.putBoolean("Stopped", timerStopped);
outState.putInt("Orientation", orientation);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState){
// Restore UI state from the savedInstanceState.
if (savedInstanceState != null){
String MinSec = savedInstanceState.getString("MinSec");
if (MinSec != null)
{
timer.setText(MinSec);
}
String Ms = savedInstanceState.getString("Ms");
if (Ms != null)
{
timerMs.setText(Ms);
}
long elapsed = savedInstanceState.getLong("Elapsed");
if(elapsed > 0)
elapsedTime = elapsed;
int theOrientation = savedInstanceState.getInt("Orientation");
//if(theOrientation > 0)
//this.setRequestedOrientation(theOrientation);
}
}
請在選項卡之間添加您正在使用的代碼。 –
我沒有任何代碼切換選項卡,這是TabActivitie的工作......我只是做了一些意圖,並將它們添加到選項卡規範。 – Cata