首页 > 解决方案 > 通过 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;
}`

标签: javaandroidandroid-studio

解决方案


推荐阅读