appPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
还尝试通过名称在活动和片段上创建新的prefs文件,但仍然没有。
boolean firstRun = appPrefs.getBoolean("firstrun", true);
if (firstRun) {
rotate_hint.setVisibility(View.VISIBLE);
} else {
rotate_hint.setVisibility(View.GONE);
}
总是,总是,返回true。
public void hide_list_hint() {
if (rotate_hint.getVisibility() == View.VISIBLE) {
rotate_hint.setVisibility(View.GONE);
Editor prefsEditor;
prefsEditor = appPrefs.edit();
prefsEditor.putBoolean("firstrun", true); <- facepalm
prefsEditor.commit();
}
}
我不知道如何在片段onCreate或onActivityCreated中尝试这个,因为我需要访问'rotate_hint'视图,该视图来自onCreateView中的膨胀视图。
答案 0 :(得分:2)
你说的是真的,如果是的话你就是真的。当然它会回归真实。改变这一行;
prefsEditor.putBoolean("firstrun", false);
答案 1 :(得分:1)
我应该在你的代码中注明:
1 -
appPrefs.getBoolean("firstrun", true);
如果你不保存“fristrun”键,则defult值将为true我猜它应该是假的2 -
if (rotate_hint.getVisibility() == View.VISIBLE) {}
你应该在这个if和on上保存你的Visibility状态为true,为此状态保存false(为了更好的可读性)
我在片段上使用这种保存和恢复方法:
恢复一个CheckBox:
public void onViewCreated(View view, Bundle savedInstanceState) {
SharedPreferences Setting = getSherlockActivity()
.getSharedPreferences(PREFERENCENAME, 0);
boolean Check=Setting.getBoolean(
"NotifyChange", false);
CheckBox Changebox = (CheckBox) view.findViewById(
R.id.checkbox);
Changebox.setChecked(Check);
}
并保存CheckBox的状态:
public void onDestroyView() {
// TODO Auto-generated method stub
super.onDestroyView();
CheckBox Changebox = (CheckBox) getView().findViewById(
R.id.checkbox);
SharedPreferences Setting = getSherlockActivity()
.getSharedPreferences(PREFERENCENAME, 0);
Editor editor = Setting.edit();
editor.putBoolean("NotifyChange",Changebox.isChecked);
editor.commit();
希望有用:)