我想要实现的是勾选复选框,当离开活动并返回时,勾选应该在那里。但是现在我勾选它,当进行不同的活动并返回时,勾号消失了。如何在复选框中保存勾号?
这是我的代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_tick, container, false);
CheckBox checkBox = (CheckBox) rootView.findViewById(R.id.checkBox62);
if(checkBox.isChecked())
checkBox.setChecked(false);
else
checkBox.setChecked(false);
return rootView;
}
}
任何帮助将不胜感激。
答案 0 :(得分:0)
您需要持久数据存储来维持状态。
在您发布的代码中,复选框的值仅在视图处于活动状态时存储,因此您在离开活动时将丢失该数据。
您可以: 在Application类中添加变量 添加首选项 或任何miriad其他解决方案
主要思想是您必须区分数据和视图。视图仅存储每个实例的数据,您需要一个后端来维护它。
答案 1 :(得分:0)
Android组件自动保存UI组件的状态Bundle
名为savedInstanceState
(onCreateView()
方法的参数)。但是,您可以在覆盖Bundle
方法时向此onSaveInstanceState()
添加自定义数据。
此外,您的代码错误:您将Checkbox
置于取消选中状态。完成这部分代码是没用的,因为它已经由Android管理。如果你真的想保留它,请尝试完全删除它或修复它。
if(checkBox.isChecked())
checkBox.setChecked(false); // Should be true to be algorithmically correct
else
checkBox.setChecked(false);
<强>来源强>
http://developer.android.com/training/basics/activity-lifecycle/recreating.html