私は多くのチェックボックスを表示するアンドロイドのビューを持っています。それらはすべて動的に追加され、それぞれにテキストを部分的に設定します。
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
LayoutInflater inflater = getLayoutInflater();
for (String string : getResources().getStringArray(R.array.string_array)) {
LinearLayout searchField = (LinearLayout) inflater.inflate(R.layout.cb, null);
CheckBox checkBox = (CheckBox) searchField.findViewById(R.id.checkBox1);
checkBox.setText(string);
layout.addView(searchField, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
}
}
}
コードからわかるように、文字列の配列があり、配列内の文字列ごとにチェック ボックスを追加します。ビューが最初に表示されたとき、すべてのチェック ボックスに正しいテキストが表示されますが、デバイスを横向きまたは縦向きモードに回転させた後、すべてのチェック ボックスに (最後のチェック ボックスから) 同じテキストが表示されます。(画面を再描画するための) 回転は、テキストには影響しません。それらはすべて、最後のチェック ボックスのテキストと共に残ります。
デバッガーを調べましたが、チェック ボックス オブジェクトは文字列ごとに新しいものであるため、オブジェクトの同じインスタンスを操作していません。私は現在アイデアがありません。
なぜこれが起こっているのか分かりますか?