Опитвам се да запазя състоянието на квадратче за отметка, докато използвам SharedPreferences. Прекарах часове в този проблем...който със сигурност е лесен за разрешаване. Следвам урока тук
Въпреки това не разбирам какво е setSilent и какво трябва да го променя в собствения си код. setSilent е променен на отметнат в кода по-долу въз основа на един от отговорите. Търсих много в stackoverflow и намерих купища свързани отговори, но нищо не проработи и грешката setSilent (понякога с различно име) винаги е постоянна. Публикувах кода си по-долу.
SuikodenFragment.java -- Грешката е тук.
Boolean checked;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.suikoden_main_activity1, container, false);
// you can use findViewById() using the above 'view'
// get the listview
expListView = (ExpandableListView) view.findViewById(R.id.suikodenList1);
// preparing list data
prepareListData();
listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader, listDataChild);
// setting list adapter
expListView.setAdapter(listAdapter);
checked = true;
return view;
}
public void onStart() {
super.onStart(); // Always call the superclass method first
SharedPreferences settings = getActivity().getSharedPreferences(suikodenprefs, Context.MODE_PRIVATE);
boolean isChecked = settings.getBoolean("Tick the Box", checked);
checked(isChecked);
//if(isChecked)
//checkBox.setChecked(true);
}
Кодът по-долу поставя състоянието на квадратчето за отметка, което може да помогне за разбирането на моя проблем.
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
CheckBox checkBox = (CheckBox) expListView.findViewById(R.id.checkboxTick);
checkBox.setOnCheckedChangeListener(this);
if (isChecked)
// Add the tick to the box
//Log.d(TAG, "Tick the box");
checked = true;
else
// Remove the tick in the box
//Log.d(TAG, "Untick the box");
checked = false;
}
@Override
public void onStop(){
super.onStop();
SharedPreferences settings = getActivity().getSharedPreferences(suikodenprefs, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("Tick the Box",checked).commit();
}
Наистина се надявам някой да помогне с това. Може да изглежда като глупав проблем, но ако може да бъде разрешен, тогава мога да завърша огромен раздел от приложението си. Следната връзка е най-близката до моя собствен код...но когато внедря тяхното решение, checkBoxView отбелязва като грешка Android запазва състоянието на квадратчето за отметка при изход от приложението. Аз съм начинаещ, затова се извинявам...благодаря предварително!