我有
Button[] buttons = new Button[9];
,稍后在活动中按钮将设置为 X 或 O。我需要保存给定按钮的文本是否为 X 或 O。单击按钮时,该按钮将更改其文本文本。由于文本不是预先确定的或 editText,因此我不确定如何保存它,以便在需要销毁活动以旋转屏幕时可以恢复它。使用循环来保存所有 9 个按钮的文本会是一件事吗?
@Override
public void onClick(View v) {
if (!((Button)v).getText().toString().equals("")) {
return;
}
String buttonID = v.getResources().getResourceEntryName(v.getId());
int gameStatePointer = Integer.parseInt(buttonID.substring(buttonID.length()-1));
if (activePlayer) {
((Button)v).setText("X");
((Button)v).setTextColor(Color.parseColor("#ff4a4a"));
gameState[gameStatePointer] = 0;
gameStatus.setText("O's Turn");
}
else {
((Button)v).setText("O");
((Button)v).setTextColor(Color.parseColor("#70FFEA"));
gameState[gameStatePointer] = 1;
gameStatus.setText("X's Turn");
}
保存所有按钮文本的循环可以工作。但真正的问题是,这不是构建数据的好方法。您不应该将您的状态存储在您的视图中。您应该有一个名为 board 的变量,用于保存游戏中每个方块的状态,并使用它来设置您的视图。然后你只需保存轮换的棋盘变量即可。
一般来说,你的视图层不应该存储数据。应将其设置为显示存储在其他地方的数据。