Я пытаюсь понять концепцию состояния экземпляра в Android.Документация, доступная по адресу https://developer.android.com/guide/components/activities/activity-lifecycle, описывает, что
Сохраненные данные, которые система использует для восстановления предыдущего состояния, называются состоянием экземпляра и представляют собой набор пар ключ-значение, хранящихся вСвязать объект. По умолчанию система использует состояние экземпляра Bundle для сохранения информации о каждом объекте View в макете вашей деятельности (например, текстовое значение, введенное в виджет EditText).Таким образом, если ваш экземпляр действия будет уничтожен и воссоздан, состояние макета будет восстановлено до его предыдущего состояния без кода, требуемого вами .Однако ваша активность может содержать больше информации о состоянии, которую вы хотите восстановить, например, переменные-члены, которые отслеживают прогресс пользователя в активности.
Примечание. Чтобы система Android могла восстановить состояниепросмотры в вашей деятельности, каждое представление должно иметь уникальный идентификатор , предоставляемый атрибутом android: id.
Я сделал пример со всеми описанными выше реквизитами, тем не менее он все ещене работает, как я ожидал: после нажатия кнопки и изменения цвета фона LinearLayout, который имеет уникальный идентификатор, он теряет цвет после поворота экрана.Переключатель остается выбранным, как и ожидалось.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.widget.LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="?android:dividerHorizontal"
android:orientation="vertical"
android:padding="16dp"
android:showDividers="middle">
<android.widget.LinearLayout
android:id="@+id/layout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="Question 1?" />
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:id="@+id/radio_p1o1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="option1" />
<RadioButton
android:id="@+id/radio_p1o2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="option2" />
<RadioButton
android:id="@+id/radio_p1o3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="option3" />
</RadioGroup>
</android.widget.LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:onClick="changeColor"
android:text="Change Background Color" />
</android.widget.LinearLayout>
</ScrollView>
и MainActivity.java
package com.example.android.testlinearlayoutpropertiessave;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import static android.graphics.Color.GREEN;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void changeColor(View view) {
findViewById(R.id.layout1).setBackgroundColor(GREEN);
}
}
Я что-то не так делаю, неправильно понял функционал илиесть ли причина, по которой он не сохраняет также backgroundColor LinearLayout?
Спасибо
PS: Я уже начал работать, кодирую, я просто хочу знать, какие свойства покрываются автоматически!