在Android中,可以通过在Activity中的onSaveInstanceState()方法中保存动态添加的视图状态,并在onRestoreInstanceState()方法中恢复视图状态。
下面是一个示例代码,演示了如何保存和恢复动态添加的视图状态:
private ArrayList dynamicViews = new ArrayList<>();
LinearLayout layout = findViewById(R.id.dynamic_layout);
Button button1 = new Button(this);
button1.setText("Button 1");
button1.setId(View.generateViewId());
layout.addView(button1);
dynamicViews.add(button1);
Button button2 = new Button(this);
button2.setText("Button 2");
button2.setId(View.generateViewId());
layout.addView(button2);
dynamicViews.add(button2);
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
SparseArray state = new SparseArray<>();
for (View view : dynamicViews) {
view.saveHierarchyState(state);
}
outState.putSparseParcelableArray("dynamic_views_state", state);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
SparseArray state = savedInstanceState.getSparseParcelableArray("dynamic_views_state");
for (View view : dynamicViews) {
view.restoreHierarchyState(state);
}
}
通过以上步骤,当屏幕方向发生变化时,动态添加的视图的状态将会被正确保存和恢复。