0

こんにちは、私は Android の初心者で、tictactoe のチュートリアルを進めています。ボードの状態を保存して、向きを変更したときにボードの文字がそのまま表示されるようにする必要があります。コードの一部を次に示します。トライ アンド ターンの文字列は保存されて表示されますが、ボード上の X と O は表示されません。理由はわかりません

MainActivity.java

           mGame = new TicTacToeGame();

       if (savedInstanceState == null) { 
            startNewGame();
            } 
            else { 
             // Restore the game's state                    
            mGame.setBoardState(savedInstanceState.getCharArray("board"));              
            mGameOver = savedInstanceState.getBoolean("mGameOver"); 
            mInfoTextView.setText(savedInstanceState.getCharSequence("info")); 
            mHumanWins = savedInstanceState.getInt("mHumanWins"); 
            mComputerWins = savedInstanceState.getInt("mComputerWins"); 
            mTies = savedInstanceState.getInt("mTies"); 
            mTurn = savedInstanceState.getChar("mTurn"); 
            } 
            displayScores(); 

       }

        @Override
    protected void onSaveInstanceState(Bundle outState) {
     super.onSaveInstanceState(outState);
     outState.putCharArray("board", mGame.getBoardState());
     outState.putBoolean("mGameOver", mGameOver);
     outState.putInt("mHumanWins",Integer.valueOf(mHumanWins));
     outState.putInt("mComputerWins",Integer.valueOf(mComputerWins));
     outState.putInt("mTies", Integer.valueOf(mTies));
     outState.putCharSequence("info", mInfoTextView.getText());
     outState.putChar("mTurn", mTurn);
    }

ボードの状態を返すtictactoeゲームのメソッドは次のとおりです。

    public char[] getBoardState() {
    return mBoard;
}

public void setBoardState(char[] board) {
    mBoard = board.clone();
}

助けてくれてありがとう。

4

2 に答える 2

1

問題は setBoardGame メソッドにあると思います。clone() メソッドは「Object」型を返しますが、mBoard は「char[]」型 (文字配列) です。したがって、Object 型から char[] 型にキャストする必要があります。

これを試して:

public void setBoardState(char[] board) {
    mBoard = (char[]) board.clone();
}
于 2013-03-15T23:05:55.873 に答える
0

試す

public char[] getBoardState() {
return mBoard.clone();

}

于 2013-03-16T17:28:08.413 に答える