我在布局xml上使用Checkbox。
<CheckBox android:id="@+id/chkbox"
android:checked="false" android:button="@drawable/ic_uncheck_img">
默认情况下,复选框设置为“false”&amp;为未选中的按钮添加图像。
private CheckBox mCheck= null;
public void onCreate(Bundle savedInstanceState) {
mCheck= (CheckBox) findViewById(R.id.chkbox);
mCheck.setChecked(false);
mCheck.setButtonDrawable(R.drawable.ic_uncheck_img);
}
public void onClick(View view) {
if (view.getId() == R.id.chkbox) {
if (mCheck.isChecked())
mCheck.setButtonDrawable(R.drawable.ic_check_img);
else
mCheck.setButtonDrawable(R.drawable.ic_uncheck_img);
}
在onClick()中,当用户点击Checkbox时,图像会从取消选中更改为检查。用户在纵向模式下执行此操作。
当用户将方向更改为设备的横向模式时,检查消失&amp;显示取消选中图像。当方向从纵向更改为横向时,不会保留复选框的状态。
请提供有关如何保持复选框状态的输入,即使方向发生变化。
答案 0 :(得分:2)
这种情况正在发生,因为默认情况下,方向的更改会导致活动重新启动(即,您的当前实例已被销毁,并且使用onCreate()创建了一个新的活动实例。)
我可以通过几种方式来实现您的需求。
1)使用onSaveInstanceState包保存复选框的状态,并在onCreate()中恢复它。 (请记住处理这两种情况:第一次启动活动时,savedInstanceState包不会出现。)
保存状态:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putBoolean("CHECKBOX_STATE", mCheckbox.isChecked());
super.onSaveInstanceState(savedInstanceState);
}
在onCreate中恢复它:
if(savedInstanceState != null) {
mCheckBox.setChecked(savedInstanceState.getBoolean("CHECKBOX_STATE"));
}
2)在AndroidManifest中,在相关活动中设置属性“android:configChanges =”orientation“”。这将导致在更改方向时不重新启动。
答案 1 :(得分:-1)
将此内容写入您的清单文件中。您希望在哪个活动中使用
<activity android:name=".TestActivity" android:configChanges="orientation|keyboardHidden"/>
当然它会起作用..