java - 通过 oncreate 返回一个可序列化的对象
问题描述
我正在构建 tictactoe,我正在尝试让 java 来恢复旋转板。我很确定我已经设法让我的 onsaveInstanceState 工作,但是返回可序列化的对象变得很麻烦。
谁能告诉我我在这里做错了什么。
这是我的主要活动
Game game;
TextView[] gameMessageIm = new TextView[3];
String[] gameMessage = {"playerone", "playertwo", "draw", "invalid"};
TileState[][] mainboard;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("mainboard", mainboard);
for (int i = 0; i < gameMessage.length; i++) {
outState.putInt(gameMessage[i], gameMessageIm[i].getVisibility());
}
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
initGameMessage();
super.onRestoreInstanceState(savedInstanceState);
game = (Game) savedInstanceState.getSerializable("mainboard");
for (int i = 0; i < gameMessage.length; i++){
gameMessageIm[i].setVisibility(savedInstanceState.getInt(gameMessage[i]));
}
}
这是游戏类`public class Game implements Serializable {
final private int BOARD_SIZE = 3;
private TileState[][] board;
private GameState Gstate;
private Boolean playerOneTurn;
private int movesPlayed;
private Boolean gameOver;
// classes' constructor
public Game() {
board = new TileState[BOARD_SIZE][BOARD_SIZE];
for (int i = 0; i < BOARD_SIZE; i++)
for (int j = 0; j < BOARD_SIZE; j++)
board[i][j] = TileState.BLANK;
Gstate = GameState.IN_PROGRESS;
playerOneTurn = true;
gameOver = false;
}
public TileState[][] returnboard(){
return board;
}`
解决方案
推荐阅读
- python - 其他用户的个人资料没有显示,它只显示当前用户名。如何显示其他用户的个人资料?
- c++ - 如何在插入 BST 之前访问对象
- python - 如何在 PythonAnywhere 的环境变量中定位 Django 设置模块?
- linux - Shell if[[]] 在执行时给出语法错误
- javascript - 如何在 3d 平面中向上移动图像
- google-bigquery - BigQuery concat 嵌套数组 json
- python - python - 当我希望对象具有 None 值时出现“NoneType”对象错误?
- elasticsearch - 跳过数组中某些值的索引,但将它们保留在 _source
- laravel - 在 Laravel 的 API 控制器中获取经过身份验证的用户
- slack - 使用“conversation.info”Slack API 调用时出现“missing_scope”错误