【发布时间】:2013-03-15 21:39:51
【问题描述】:
您好,我是 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();
}
提前感谢您的帮助。
【问题讨论】:
-
保存前设置BoardState了吗?
-
你能再解释一下吗?
-
你有没有在调用 onSaveInstanceState 之前通过调用 setBoardState 来保存你的棋盘状态。例如,您可以在 onSaveInstanceState 中仅记录 mBoard 的第一个值,以查看那里是否有任何内容。
-
谢谢,我会尝试,但我不是很擅长调试,因为调试器在我的机器上非常慢。再次感谢。
-
你所要做的就是声明一个类成员,比如 private static final String TAG = "Tic tac toe";然后在 onSaveInstanceState 中放入以下 Log.d(TAG, "mBoard first element = " + mBoard[0]);并查看您的 logcat 以查看它打印的内容。