如何在Android弹出菜单中显示来自共享偏好的字符串?

时间:2015-05-27 10:02:01

标签: android

我试图显示一个简单的字符串,但我只能看到:

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();

2 个答案:

答案 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"只是为了进行测试。