Это похоже на дублирующий вопрос, но на самом деле ответы на аналогичный вопрос не решают мою проблему: я делаю игру (слайд-головоломка), в которой важно состояние (массив чисел) доски. Поэтому, когда ориентация меняется, я хочу сохранить этот массив из фрагмента 1 (который будет на экране только в портретном режиме) и передать его во фрагмент 2 (который будет на экране только в ландшафтном режиме). До сих пор мне удалось получить это (в onCreate деятельности, которая содержит фрагменты):
GameFragment gameFragment = new GameFragment();
gameFragment.setArguments(getIntent().getExtras());
GameFragment9 gameFragment9 = new GameFragment9();
gameFragment9.setArguments(getIntent().getExtras());
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, gameFragment, "fragmentGame")
.commit();
}
else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, gameFragment9, "fragmentGame9")
.commit();
}
Также я узнал, как сохранить состояние одного фрагмента, но это не совсем то, что я хочу, потому что я не хочу, чтобы последний фрагмент перестраивался, просто поместил новый фрагмент с информацией из первого фрагмента. Я думал об использовании onConfigChange, чтобы определить, когда экран изменился и что-то там произошло, но не знаю, как это сделать.