私の例は、互換性ライブラリの 1 つに付属しているサンプル アプリケーションの 1 つを基にしています。それがレイアウトファイルです:
<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>
そして、ここにいくつかのJavaコードがあります:
@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);
}
};
アクティビティが開始され、最初のチェックボックスが無効になり、1 つのボタン (ボタン 2) がレイアウトに追加され、画面の向きが変更され、ボタン 2 (onClickListener メソッドで追加された) が消えます。
ランタイム変更の処理に関する多くのことを読みましたが、上記の例でボタン 2 が消えるのを防ぐ方法をまだ明確に把握していません。どんな助けでも大歓迎です。