Как сохранить действие кнопки Button при смене ореинтации (а точнее сделать так что бы метод setAnswerShownResult) не “сбивался”

158
10 февраля 2019, 02:20
    mShowAnswerButton = (Button) findViewById(R.id.show_answer_button);
    mShowAnswerButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (mAnswerIsTrue) {
            mAnswerTextView.setText(R.string.true_button);
        } else {
            mAnswerTextView.setText(R.string.false_button);
        }
            setAnswerShownResult(true);
    }
});
}
@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
    // получаем ссылку на поле ввода текста
    // переменная которую сохраняем и под каким именем, чтобы потом прочитать
    savedInstanceState.putString(CHEAT_INDEX, String.valueOf(mAnswerTextView.getText()));
    super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    mAnswerTextView.setText(savedInstanceState.getString(CHEAT_INDEX));
       // setAnswerShownResult(true);
}
    private void setAnswerShownResult(boolean isAnswerShown) {
    Intent data = new Intent();
    data.putExtra(EXTRA_ANSWER_SHOWN, isAnswerShown);
    setResult(RESULT_OK, data);
}
Answer 1

При повороте экрана активность останавливается и запускается снова, поэтому восстаналивается положение как после выполнения onCreate(). Чтобы восстановить текущее состояние экрана (с нажатыми радиокнопками, добавленными элементами и т.д.) нужно его предварительно сохранить. Например, так:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // переменная которую сохраняем и под каким именем, чтобы потом прочитать
    savedInstanceState.putString("ButtonText", mAnswerTextView.getText()); 
    super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    mAnswerTextView.setText(savedInstanceState.getString("ButtonText"));
}
READ ALSO
JavaFX некорректный вывод X-Bee пакета в файл

JavaFX некорректный вывод X-Bee пакета в файл

Имеется строковая переменная

179
Проблема при первом запуске Oracle SQL Developer

Проблема при первом запуске Oracle SQL Developer

Проблема точно такая же, как описана здесь - https://stackoverflowcom/questions/52484814/oracle-sql-developer-problem-initializing-welcome-page

205
Проблема в java конструкторe Java

Проблема в java конструкторe Java

Код компилируется но выдаёт ошибки(

185
Регулярное выражение js 2 символа

Регулярное выражение js 2 символа

Возник вопрос как написать на js регулярное выражение ( с ними оч слаб ) в общем есть строки /ru/main/page /en/main/page а так же могут быть просто /main/page

145