退出然后返回应用程序后,将复选框中的勾号保存在复选框中不起作用



嗨,我有一个勾选框,我希望用户勾选它,然后在用户离开应用程序或导航到不同的活动并返回时保存该勾选。这是的代码已经得到了sofar,但它似乎不起作用

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.test_ticking, container, false);
    ch = (CheckBox) rootView.findViewById(R.id.TickBox1);
    ch.setOnClickListener(new View.OnClickListener() {
    SharedPreferences pref = getActivity().getSharedPreferences("Pref",0);
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(pref.getBoolean("check", false))
            {
                ch.setChecked(false);
                pref.edit().putBoolean("check", false).commit();
            } else {
                ch.setChecked(true);
                pref.edit().putBoolean("check", true).commit();
            }
        }
        public void onResume() {
        }{
                if(pref.getBoolean("check", true))
            {
                ch.setChecked(false);
            } else {
                ch.setChecked(false);
            }
  }
 });
   return rootView;
  }
 }

有人能在这个问题上帮我吗。我不认为这会很难实现吗?

要存储首选项,可以执行以下操作。不要使用onClickListener,而是使用OnCheckedChangeListener:

ch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            SharedPreferences pref = getActivity().getSharedPreferences("Pref",0);
            if (isChecked) {
                pref.edit().putBoolean("check", true).commit();
            }
            else {
                pref.edit().putBoolean("check", false).commit();
            }
        }
    });

你的onResume方法应该是这样的:

@Override
public void onResume() {
    super.onResume();
    SharedPreferences pref = getActivity().getSharedPreferences("Pref",0);
    if(pref.getBoolean("check", false)) { 
        ch.setChecked(true); 
    } else { 
        ch.setChecked(false); 
    } 
}

最新更新