如何使用SharedPreferences? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用SharedPreferences? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

如何在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。如何解决此问题并且不丢失数据?

答案

你不需要每次都将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) {

    }
另一答案

实际上你的代码正在每个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();
    }
  }
}

希望这可以帮助

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

如何正确的使用SharedPreferences

如何在 Flutter 中使用 SharedPreferences 和 Injectable?

如何使用 Sharedpreferences 存储 EditText 样式(粗体、斜体、颜色等)

如何使用 SharedPreferences 系统地存储和获取数据?

如何在颤振中使用 SharedPreferences?

如何在 ViewModel 中访问 SharedPreferences?