【发布时间】:2016-04-11 08:19:17
【问题描述】:
我有一个表面视图 gameView,它被加载到这个 GameViewActivity 中。
我在 onSaveInstanceState 方法中保存了一些值。
当我离开此活动并返回时,再次调用 OnCreate(),将我的活动恢复到其原始状态
并且永远不会调用 onRestoreInstanceState。
最重要的是,当我检查传递给 OnCreate 方法的 Bundle 时,它始终为空。任何想法,我非常卡在这里?
public class GameViewActivity extends AppCompatActivity {
private int player;
private GridView grid1;
private GridView grid2;
private GameView gameView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
grid1 = new GridView(Constants.NUMBER_COLUMN_TILES, Constants.NUMBER_ROW_TILES);
grid2 = new GridView(Constants.NUMBER_COLUMN_TILES, Constants.NUMBER_ROW_TILES);
} catch(Exception e){
e.printStackTrace();
}
this.player = 1;
gameView = new GameView(this, "sea", grid1);
setContentView(gameView);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("tiles_player1", grid1.getTiles());
outState.putSerializable("tiles_player2", grid2.getTiles());
outState.putInt("player", player);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
grid1.setTiles((HashMap<Coordinate,GameTile>) savedInstanceState.get("tiles_player1"));
grid2.setTiles((HashMap<Coordinate,GameTile>) savedInstanceState.get("tiles_player2"));
player = (int)savedInstanceState.get("player");
}
【问题讨论】: