如何保存勾选的复选框

时间:2014-11-05 13:39:13

标签: android checkbox

我想要实现的是勾选复选框,当离开活动并返回时,勾选应该在那里。但是现在我勾选它,当进行不同的活动并返回时,勾号消失了。如何在复选框中保存勾号?

这是我的代码:

@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;
  }
}

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您需要持久数据存储来维持状态。

在您发布的代码中,复选框的值仅在视图处于活动状态时存储,因此您在离开活动时将丢失该数据。

您可以:     在Application类中添加变量     添加首选项     或任何miriad其他解决方案

主要思想是您必须区分数据和视图。视图仅存储每个实例的数据,您需要一个后端来维护它。

答案 1 :(得分:0)

Android组件自动保存UI组件的状态Bundle名为savedInstanceStateonCreateView()方法的参数)。但是,您可以在覆盖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