我正在尝试在一个活动中保存一些过滤器/状态,然后在下一个活动中使用该数据.
我正在使用SharedPreferences,但它没有像我预期的那样工作.
public class Filteractivity extends Activity { private static final String TAG = Filteractivity.class.getname(); EditText distanceEditor; @OverrIDe public voID onPause() { super.onPause(); SharedPreferences preferences = getSharedPreferences(PreferenceKey.FILTER_PREFERENCES_name, MODE_WORLD_READABLE); String distance = distanceEditor.getText().toString(); preferences.edit().putString(PreferenceKey.disTANCE, distance); preferences.edit().commit(); Log.i(TAG, "Wrote max-distance=" + distance); Log.i(TAG, "Preferences contains distance=" + preferences.getString(PreferenceKey.disTANCE, "FAIL")); } public static class PreferenceKey { public static final String FILTER_PREFERENCES_name = "Filteractivity:" + "Filter_Preference_file"; public static final String disTANCE = "Filteractivity:" + "disTANCE"; }}
然后,应该使用此首选项的Activity:
public class MapActivity extends MapActivity { @OverrIDe public voID onResume() { super.onResume(); SharedPreferences preferences = getSharedPreferences(Filteractivity.PreferenceKey.FILTER_PREFERENCES_name, MODE_WORLD_READABLE); String maxdistance = preferences.getString(Filteractivity.PreferenceKey.disTANCE, "FAIL"); Log.i(TAG, "Read max-distance=" + maxdistance); }}
但我得到的输出是:
.Filteractivity( 4847): Wrote max-distance=99.9.Filteractivity( 4847): Preferences contains distance=FAIL.MapActivity( 4847): Read max-distance=FAIL
谁能告诉我这里我做错了什么?
我正在针对API Level-8进行开发.
解决方法:
在以下两行中,
preferences.edit().putString(PreferenceKey.disTANCE, distance);preferences.edit().commit();
正在返回两个不同的SharedPreferences.Editors.因此,价值没有得到承诺.相反,你必须使用:
SharedPreferences.Editor spe = preferences.edit();spe.putString(PreferenceKey.disTANCE, distance);spe.commit();
总结 以上是内存溢出为你收集整理的java – SharedPreferences无法跨活动工作全部内容,希望文章能够帮你解决java – SharedPreferences无法跨活动工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)