共享偏好设置Android Studio错误保存数据

时间:2018-07-26 06:50:56

标签: java android sharedpreferences

我使用sharedpreference从numberDecimal编辑文本中保存了数据。当我想在另一个活动中获取该数据时,它始终显示为空,因此未正确保存。有什么建议吗?

这是我保存数据的代码:

public void Start(View view) {
    EditText LevelEdit = (EditText) findViewById(R.id.editText_LevelCurrent);
    String User_Level = LevelEdit.getText().toString();
    if (User_Level == "") {
        Toast.makeText(this, "Select a level",
                Toast.LENGTH_LONG).show();

    } else {


        SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPref.edit();
        editor.putString(GameConstants.StringvalueOfLevel,User_Level);
        editor.commit();


        Intent myIntent = new Intent(Mygame_Menu.this, Mygame.class);
        startActivity(myIntent);
    }
}

3 个答案:

答案 0 :(得分:1)

我认为您的条件是错误的,并且由于您在共享首选项中保存空对象时,请勿检查像这样的字符串if (User_Level == ""),==运算符不适用于Java中的字符串!您应该使用equals方法与类似"Amir".equals("Amir")

的String进行比较

改用if (User_Level==null||User_Level.isEmpty())

答案 1 :(得分:0)

您缺少将sharedPreference的名称作为导致error的参数的原因。

代替这个

 SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPref.edit();

更改

SharedPreferences sharedPref = getApplicationContext().getSharedPreferences("sharedPreferenceName",Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPref.edit();

答案 2 :(得分:0)

您无法在int循环中比较具有if格式的字符串值。更改

if(User_Level == "")

收件人

if(User_Level.equals(""))

因此它将检查条件是否正确。否则,上面的内容将执行else部分,即使其为null。

已编辑

 private static final String PREFS_NAME = "PREF_LEVEL_DATA";
 private static final String PREFS_KEY = "LEVEL";

 public void SaveLevel(Context context, String level) {

    SharedPreferences settings = context.getSharedPreferences(PREFS_NAME,
            Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = settings.edit();
    editor.putString(PREFS_KEY, level);

    editor.commit();
}

public String RetrieveLevel(Context context) {

    String level;
    SharedPreferences settings = context.getSharedPreferences(PREFS_NAME,
            Context.MODE_PRIVATE);

    if (settings.contains(PREFS_KEY)) {
        level = settings.getString(PREFS_KEY, "");
    } else {
        return "";
    }
    return level;
}

用于存储值

SaveLevel(getApplicationContext(), User_Level);

获取值

String level = RetreiveLevel(getApplicationContext());

已更新

 EditText LevelEdit = (EditText) findViewById(R.id.editText_LevelCurrent);
 String User_Level = LevelEdit.getText().toString();
 if (User_Level.equals("")) {
    Toast.makeText(this, "Select a level",
            Toast.LENGTH_LONG).show();

 } else {


    SharedPreferences sharedPref = getSharedPreferences("ANY_PREFERENCE_NAME",
        Context.MODE_PRIVATE); //Replace "ANY_PREFERENCE_NAME" as your own string
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putString(GameConstants.StringvalueOfLevel,User_Level);
    editor.commit();


    Intent myIntent = new Intent(Mygame_Menu.this, Mygame.class);
    startActivity(myIntent);
}