У меня есть три кнопки, и любая из выбранных кнопок первая помечена знаком X, а вторая выбранная кнопка будет помечена буквой O, а последняя кнопка снова помечена как X.
Если помечена буква Xзатем его цвет белый, если это O, то он помечен серым.
Теперь я хочу использовать сохраненный экземпляр, чтобы при повороте телефона цвета оставались такими же, как были.На самом деле происходит то, что если я поверну телефон, то какой последний выбор был сделан, весь текст вернется к этому цвету.
Так что, если я нажму на X и O и поверну телефон, и X, иO будет отображаться серым цветом, который соответствует цветам O.
Если я затем выберу последний X и поверну телефон, все буквы будут отмечены белым цветом, который соответствует цвету X.
Я не уверен, вызывает ли это заданный цвет, или он помнит, кто его двигал ранее, и устанавливает цвет в соответствии с этим, мой вопрос: как решить, чтобы все буквы сохранили свой цвет при вращении?
private boolean playerOneMove = true;
private Button[][] buttons = new Button[1][3];
private static final String TEXT_COLOR = "textColor";
private String textColor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_player2);
btnObj1 = findViewById(R.id.button_00);
btnObj2 = findViewById(R.id.button_01);
btnObj3 = findViewById(R.id.button_02);
if (savedInstanceState != null) {
textColor = savedInstanceState.getString(TEXT_COLOR);
if(btnObj1 != null) {
btnObj1.setTextColor(Color.parseColor(textColor));
}
if (btnObj2 != null) {
btnObj2.setTextColor(Color.parseColor(textColor));
}
if (btnObj3 != null) {
btnObj3.setTextColor(Color.parseColor(textColor));
}
for (int i = 0; i < 1; i++) {
for (int j = 0; j < 3; j++) {
String buttonID = "button_" + i + j;
int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
buttons[i][j] = findViewById(resID);
buttons[i][j].setOnClickListener(this);
}
}
}
@Override
public void onClick(View v) {
if (!((Button) v).getText().toString().equals("")) {
return;
}
if (playerOneMove) {
((Button) v).setText("X");
textColor = "#e8e5e5";
((Button) v).setTextColor(Color.parseColor(textColor));
} else {
((Button) v).setText("O");
textColor = "#737374";
((Button) v).setTextColor(Color.parseColor(textColor));
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean("playerOneMove", playerOneMove);
outState.putString(TEXT_COLOR, textColor);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) { ;
super.onRestoreInstanceState(savedInstanceState);
playerOneMove = savedInstanceState.getBoolean("playerOneMove");
textColor = savedInstanceState.getString(TEXT_COLOR);
}