我试图显示一个简单的字符串,但我只能看到:
android.widget.EditText {3cdce91dVFED..CL.F ....... 0,79-758 ..
//works fine
String userId = "42";
popupMenu.getMenu().add(0, 0, 2, userId );
//is showing the code from above
String userId = sharedPreferences.getString("userId", "");
popupMenu.getMenu().add(0, 0, 2, userId );
我使用了一个带有静态字符串字段的类,并得到了相同的结果。
我使用两个不同的操作,一个表单用于插入userId,另一个表单用于在弹出菜单中显示userId。什么是解决这个问题的最佳方法?
我使用以下代码将值保存到共享首选项中:
EditText userId = (EditText)findViewById(R.id.editTextId);
sharedPreferences.edit().putString("userId", userId.toString()).commit();
答案 0 :(得分:1)
更改以下行
sharedPreferences.edit().putString("userId", userId.toString()).commit();
到
sharedPreferences.edit().putString("userId", userId.getText().toString()).commit();
希望这会对你有所帮助。
答案 1 :(得分:0)
我通常使用类似这两种方法的东西来保存和检索共享偏好
private void updateStatus(String key, String content){
try{
SharedPreferences sharedPref = getSharedPreferences(getString(R.string.shared_preference_key),
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(getString(key), content);
editor.apply(); //Executes in background
}catch(Exception e){
//Handle excpetion
}
}
public static Boolean getPreference(Context context, String key){
SharedPreferences sharedPref = context.getSharedPreferences(context.getString(R.string.shared_preference_key),
Context.MODE_PRIVATE);
return sharedPref.getBoolean(context.getString(key), "");
}
注意:
您可能希望使用其他内容更改context.getString(R.string.shared_preference_key)
,尝试将其替换为"example"
只是为了进行测试。