我使用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);
}
}
答案 0 :(得分:1)
我认为您的条件是错误的,并且由于您在共享首选项中保存空对象时,请勿检查像这样的字符串if (User_Level == "")
,==运算符不适用于Java中的字符串!您应该使用equals方法与类似"Amir".equals("Amir")
改用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);
}