My example is adapted from one of the sample applications that come with one of the compatibility libraries. That's the layout file:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="8dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/fragment_menu_msg" />
<CheckBox android:id="@+id/menu1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:checked="true"
android:text="@string/fragment1menu">
</CheckBox>
<CheckBox android:id="@+id/menu2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:checked="true"
android:text="@string/fragment2menu">
</CheckBox>
</LinearLayout>
And here some Java code:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_menu);
ViewGroup layout = (ViewGroup) findViewById(R.id.layout);
Button btn = new Button(getApplication());
btn.setId(1);
btn.setText("Button 1");
layout.addView(btn);
mCheckBox1 = (CheckBox) findViewById(R.id.menu1);
mCheckBox1.setOnClickListener(mClickListener);
}
final OnClickListener mClickListener = new OnClickListener() {
public void onClick(View v) {
ViewGroup layout = (ViewGroup) findViewById(R.id.layout);
Button btn = new Button(v.getContext());
btn.setId(2);
btn.setText("Button 2");
layout.addView(btn);
}
};
The activity starts, you disable the first checkbox, one button (button 2) is added to the layout, you change the screen orientation and button 2 (added in the onClickListener method) disappears.
Screenshots on Directupload.net
I have read a lot of stuff about Handling Runtime Changes but I still don't have a clear picture how to prevent Button 2 to disappear in the avobe example. Any help is highly appreciated.