如何使用共享首选项? [复制]

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();
    
  

希望对你有帮助

【讨论】:

以上是关于如何使用共享首选项? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用颤振中的键删除/清除共享首选项?

如何使用 Xamarin 在设备之间共享用户首选项

如何使用 Android Studio 查看共享首选项文件?

如何以共享首选项保存图像?

如何使用共享首选项让用户保持登录状态?

如何使用 dart/flutter 中的共享首选项保存和获取列表列表