Reiniciando um jogo Tic-tac-toe no Android depois de fechar o fragmento

Estou aprendendo o desenvolvimento do Android criando um projeto de teste: Tic-tac-toe. Meu aplicativo jogo da velha começa com uma atividade do menu principal com umButton que diz New Game. Após clicar em Novo jogo, é iniciada uma atividade com um fragmento que contém um jogo Tic-Tac-Toe (em um GridLayout). O usuário pode jogar, mas quando voltar ao menu principal, o estado do jogo não será salvo.

Quero mudar isso para que, quando o usuário voltar ao menu principal, ele verá um novoButton chamado "Continuar" (além do botão "Novo jogo"). Depois que o usuário clica em "Continuar", o jogo que estava jogando antes continua. Se clicar no botão "Novo jogo", um novo jogo será lançado como antes.

Usando oonSaveInstanceState método e umBundle savedInstanceState, Pude preservar o estado do jogo nas alterações de orientação (salvando os dados da classe TicTacToe subjacente). Meu código abaixo mostra como eu fiz isso. Gostaria de fazer algo semelhante desta vez novamente - li sobre isso, mas não entendo bem a melhor maneira de começar. Alguém pode me mostrar os passos certos?

Observe que estou fazendo isso programaticamente (ou seja, projetando o layout fora dos arquivos xml)!

MinhasMainMenu classe:

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);
    }

}

com um arquivo xml correspondenteactivity_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>

Agora meuMainGame.class se parece com isso:

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());
        }

    }
}

Obrigado por qualquer ajuda.

questionAnswers(4)

yourAnswerToTheQuestion