Вот простой проект:Как восстановить состояние отстраненного зрения
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/add_some_layout_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Add layout"/>
</LinearLayout>
some_layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/edittext_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/some_edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Some hint"
android:inputType="text"/>
</LinearLayout>
Рассмотрим два случая:
Случай 1:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final LinearLayout container = (LinearLayout) findViewById(R.id.container);
final LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this);
final View someLayoutWithEditText = layoutInflater.inflate(R.layout.some_layout, container, false);
container.addView(someLayoutWithEditText);
// button isn't used
}
}
Эффект случае 1: EditText сохраняет свой текст во время изменения конфигурации.
Случай 2:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final LinearLayout container = (LinearLayout) findViewById(R.id.container);
final LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this);
final View someLayoutWithEditText = layoutInflater.inflate(R.layout.some_layout, container, false);
Button addLayoutButton = (Button) findViewById(R.id.add_some_layout);
addLayoutButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
container.addView(someLayoutWithEditText);
}
});
}
}
Влияние случая 2: Добавляем EditText на кнопку мыши => после того, как все "восстановить часть" было сделано => от состояния EditText не был восстановлен
Вопрос: Как восстановить состояние EditText во втором случае?
не делайте это окончательным – ivan