Android复选框在切换到横向时更改文本

Android复选框在切换到横向时更改文本,android,checkbox,landscape-portrait,Android,Checkbox,Landscape Portrait,我在android中有一个视图,显示了许多复选框。它们都是动态添加的,我为每个部分设置了一个文本 public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ma

我在android中有一个视图,显示了许多复选框。它们都是动态添加的,我为每个部分设置了一个文本

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));
        }
    }
}
正如您从代码中看到的,我有一个字符串数组,对于数组中的每个字符串,我都添加了一个复选框。当第一次显示视图时,所有复选框都有正确的文本,但在我将设备旋转到横向或纵向模式后,所有复选框都有相同的文本(来自上一个复选框)。任何旋转(重新绘制屏幕)都不会再影响文本。它们都保留最后一个复选框的文本

我在调试器中查看过,复选框对象对于每个字符串都是一个新的对象,因此我没有使用同一个对象实例。我现在没有主意了


您知道为什么会发生这种情况吗?

当您旋转屏幕时,运行时资源将更改,活动将重新启动。解决问题的两种方法:

  • OnCheckedChangeListener
    中保留所有复选框的值,并在
    onResume
    中重置它们
  • 根据需要,自行处理配置更改的
    onConfigurationChanged

  • 问题不在于复选框的值,而在于出现在复选框中的文本。考虑到这一行“checkBox.setText(string);”,应该保持不变