Cохранение активити при повороте экрана
У меня есть три кнопки в приложении и 3 textview со счетчиком. При нажатии на кнопку tv записывает число в порядке возрастания, в зависимости от кол-ва нажатий. А при повороте устройства, всё сбрасывается и активити пересоздается. Помогите пожалуйста, не понимаю как сохранить текущую информацию активити?
public class MoxyMainActivity extends MvpAppCompatActivity
implements MoxyExampleView, View.OnClickListener {
@InjectPresenter
Presenter presenter;
private Button btnCounter1;
private Button btnCounter2;
private Button btnCounter3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnCounter1 = (Button) findViewById(R.id.btnCounter1);
btnCounter2 = (Button) findViewById(R.id.btnCounter2);
btnCounter3 = (Button) findViewById(R.id.btnCounter3);
btnCounter1.setOnClickListener(this);
btnCounter2.setOnClickListener(this);
btnCounter3.setOnClickListener(this);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("key", "value");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
@Override
public void onClick(View v) {
presenter.buttonClick(v.getId());
}
@Override
public void setButtonText(int btnIndex, int value) {
switch (btnIndex) {
case 1:
btnCounter1.setText("Количество = " + value);
break;
case 2:
btnCounter2.setText("Количество = " + value);
break;
case 3:
btnCounter3.setText("Количество = " + value);
break;
}
}
}
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="@string/_1" />
<Button
android:id="@+id/btnCounter1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Количество = 0" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:text="@string/_2" />
<Button
android:id="@+id/btnCounter2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Количество = 0" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:text="@string/_3" />
<Button
android:id="@+id/btnCounter3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Количество = 0" />
</LinearLayout>
Ответы (1 шт):
Автор решения: Olmicron
→ Ссылка
Из того кода, что вы предоставили - получается примерно так:
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Тут сохраняем в outState данные
outState.putInt("counter1",valueCounter1);
outState.putInt("counter2",valueCounter2);
outState.putInt("counter3",valueCounter3);
}
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// А тут восстанавливаем данные
setButtonText(R.id.btnCounter1,savedInstanceState.getInt("counter1",0));
setButtonText(R.id.btnCounter2,savedInstanceState.getInt("counter2",0));
setButtonText(R.id.btnCounter3,savedInstanceState.getInt("counter3",0));
}
А дальше уже сами делайте как угодно.