Возобновление игры в крестики-нолики в Android после закрытия фрагмента

Я изучаю разработку под Android, создав тестовый проект: крестики-нолики. Мое приложение Tic-tac-toe начинается с действия в главном меню сButton что говорит Новая Игра. После нажатия кнопки «Новая игра» запускается действие с фрагментом, содержащим игру «Крестики-нолики» (в GridLayout). Пользователь может играть в игру, но когда он возвращается в главное меню, состояние игры не сохраняется.

Я хочу изменить это так, чтобы когда пользователь вернется в главное меню, он увидит новоеButton называется «Продолжить» (в дополнение к кнопке «Новая игра»). Как только пользователь нажимает «Продолжить», игра, в которую он играл до этого, продолжается. Если нажать кнопку «Новая игра», новая игра будет запущена, как и раньше.

ИспользуяonSaveInstanceState метод иBundle savedInstanceStateЯ смог сохранить состояние игры при изменении ориентации (сохранив данные из базового класса TicTacToe). Мой код ниже показывает, как я это сделал. Я хотел бы сделать что-то подобное на этот раз снова - я читал об этом, но я не совсем понимаю, как лучше начать. Кто-нибудь может показать мне правильные шаги?

Обратите внимание, что я делаю это программно (т.е. проектирую макет вне XML-файлов)!

мойMainMenu учебный класс:

public class MainMenu extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_menu);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    public void startGame(View view) {
        Intent intent = new Intent(this,MainGame.class);
        startActivity(intent);
    }

}

с соответствующим XML-файломactivity_main_game:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/new_game"
        android:onClick="startGame"

        />

</RelativeLayout>

Теперь мойMainGame.class выглядит так:

public class MainGame extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_game);
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new BoardFragment()).commit();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_game, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    public static class BoardFragment extends Fragment {

        public TicTacToe t = new TicTacToe();  //A class I wrote that launches a simple TicTacToe game

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            if (savedInstanceState != null) {
                t = new TicTacToe(savedInstanceState.getInt("TicTacToeData"),
                );
            }

    //Graphics stuff here: variable rootView which contains the TicTacToe grid is defined
    //and onClickListeners are added to the ImageViews in the GridLayout which makes corresponding
    //changes to t.

            return rootView;
        }

        @Override
        public void onSaveInstanceState(Bundle savedInstanceState) {
            savedInstanceState.putInt("TicTacToeData", t.getGameData());
        }

    }
}

Спасибо за любую помощь.

Ответы на вопрос(4)

Ваш ответ на вопрос