【问题标题】: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。 我怎样才能解决这个问题并且不丢失数据?

【问题讨论】:

  • 我看到了那个问题,但答案代码对我不起作用;)

标签: android boolean sharedpreferences


【解决方案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();
    }
  }
}

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 2017-04-01
    相关资源
    最近更新 更多