Рабочий пример кода с onRestoreInstanceState Часть 2

211
03 мая 2017, 08:47

Извиняюсь что наплодил похожих вопросов - просто не смог вставить код в прошлый вопрос: Рабочий пример кода с onRestoreInstanceState

Подскажите почему onRestoreInstanceState не восстанавливает значение mValue при переходе с TwoActivity? Если делаю не так подскажите как это реализовать?(Сохранить состояния Активити и вернуть его при переходе на него с другой активити)

public class MainActivity extends AppCompatActivity  {
private static final String VALUE_KEY = "Value";
private int mValue;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (savedInstanceState != null) {
        mValue = savedInstanceState.getInt(VALUE_KEY);
    } else {
        mValue = 1;
    }
    Toast.makeText(this, "Value: " + mValue, Toast.LENGTH_SHORT).show();
    btn = (Button) findViewById(R.id.button2);
    View.OnClickListener Lisner = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this,TwoActivity.class);
            startActivity(intent);
        }
    };
    btn.setOnClickListener(Lisner);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    mValue = 2;
    outState.putInt(VALUE_KEY, mValue);
   }
  }
 public class TwoActivity extends AppCompatActivity {
Button btn2;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_two);
    btn2 = (Button) findViewById(R.id.button3);
    View.OnClickListener Lisen = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(TwoActivity.this,MainActivity.class);
            startActivity(intent);
        }
    };
    btn2.setOnClickListener(Lisen);
}
}
Answer 1

Во-первых в MainActivity у Вас нет onRestoreInstanceState. Во-вторых в TwoActivity Вы открываете новый экземпляр MainActivity, а не возвращаетесь назад. Для возврата вызовите просто finish() в обработчике onClick.

Answer 2

onRestoreInstanceState() не предназначен для этого. Он восстанавливает значения при вращении девайса или иных изменений конфигурации.

READ ALSO
Условие для ввода

Условие для ввода

При входе в приложение стоит пинкод, хочу сделать следующую зависимость:

216
Как выровнять текст по центру картинки?

Как выровнять текст по центру картинки?

Рисую текст на картинкеКак этот текст разместить (по горизонтали) по центру?

409
Проблема с циклом с большим объемом данных

Проблема с циклом с большим объемом данных

Добрый деньУ меня есть массив int[] размер 60480, для удобства мне нужно раскидать данные по 7 "ячейкам", для этого я использую конструкцию ArrayList<ArrayList<Integer>>...

251
Как в CardView вручную добавить элементы?

Как в CardView вручную добавить элементы?

ЗдравствуйтеКак в CardView добавить больше 1 элемента?

264