Просто чтобы мне было понятно, вы говорите, что у вас есть несколько вкладок, которые используют разные ориентации (книжная или альбомная), и у вас возникают проблемы при переключении вкладок и правильной настройке соответствующих ориентаций?
В ответ на комментарий Cata:
Да, поэтому при каждом повороте экрана текущая видимая активность уничтожается и снова вызывается onCreate (если я вспоминаю шаги).Вам нужно вызвать getCurrentTab (), который возвращает значение int, представляющее вкладку, и сбрасывает его в качестве активной вкладки при вызове onCreate.Вы можете сделать это несколькими способами ... либо с помощью небольшого метода, который обрабатывает только это, и вызывая его через onCreate, либо с помощью onSaveInstanceState (Bundle), чтобы сохранить ваши текущие данные, и onRestoreInstanceState (), чтобы перезагрузить данные вкладок.
Вы можете установить глобальное значение int (int currentTab = 0), не устанавливая его в onCreate (), а в своем методе onSaveInstanceState (Bundle) вы можете сохранить его на текущей вкладке (currentTab = getCurrentTab ()),затем в onRestoreInstanceState () вы можете установить его снова.
Имеет ли это смысл?
Имейте в виду, что я не проверял это, но готов сделать это, если вы не знакомы сэти два вызова методов.
Ниже приведен пример сохранения данных в Bundle - также напомним, что 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);
}
}