如何使用共享首选项? [复制]
Posted
技术标签:
【中文标题】如何使用共享首选项? [复制]【英文标题】:How to use SharedPreferences? [duplicate] 【发布时间】:2018-08-11 15:03:40 【问题描述】:如何在 android Studio 上使用 SharedPreferences 来保存一些数据,例如布尔值?
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME,MODE_PRIVATE).edit();
editor.putBoolean("firststart",false);
editor.apply();
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME,MODE_PRIVATE);
boolean firstStart= prefs.getBoolean("firststart",false);
if (!firstStart)
Intent intent12 = new Intent(getApplicationContext(),FirstStart.class);
startActivity(intent12);
prefs.getBoolean("firststart",true);
else if (firstStart)
如果我每次创建活动时都使用此代码,则布尔值返回 false,然后返回 true。 我怎样才能解决这个问题并且不丢失数据?
【问题讨论】:
我看到了那个问题,但答案代码对我不起作用;) 【参考方案1】:你不需要每次都将false
保存为值,如果没有值,你会得到false
这里prefs.getBoolean("firststart",false)
否则true
作为你保存的值
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME,MODE_PRIVATE).edit();
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME,MODE_PRIVATE);
boolean firstStart= prefs.getBoolean("firststart",false);
if (!firstStart)
// save true during first time initialization
Intent intent12 = new Intent(getApplicationContext(),FirstStart.class);
startActivity(intent12);
editor.putBoolean("firststart",true);
editor.apply();
// for second run, when you get true
else if (firstStart)
【讨论】:
非常感谢!它起作用了。 很高兴能帮上忙,编码愉快【参考方案2】:实际上,您的代码在每次 onCreate 时都会自行重置,所以您需要做的就是这样
public class MyActivity extends Activity
SharedPreferences prefs = null;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
@Override
protected void onResume()
super.onResume();
if (prefs.getBoolean("firststart", true))
// Do first run stuff here then set 'firstrun' as false
// using the following line to edit/commit prefs
prefs.edit().putBoolean("firststart", false).commit();
希望对你有帮助
【讨论】:
以上是关于如何使用共享首选项? [复制]的主要内容,如果未能解决你的问题,请参考以下文章