如何在另一个Activity中检索SharedPreference文件的值?

时间:2013-03-05 09:37:29

标签: java sharedpreferences

Activity 1st..
Here this is my first activity to add data


preferences=PreferenceManager.getDefaultSharedPreferences(context);
                  preferences = getPreferences(MODE_PRIVATE);
                  editor = preferences.edit();
                 editor.putString("userid",et_username.getText().toString());//adduserid
                editor.putString("password",et_password.getText().toString());//add password
                  editor.commit();

活动2 这是我检索数据的第二个活动。

String userName=preferences.getString("userid","");
            String password=preferences.getString("password","");
            Log.d("user : second", ""+preferences.getString("userid",""));
            Log.d("password : second", ""+preferences.getString("password",""));

由于空值,因此不显示日志。

4 个答案:

答案 0 :(得分:0)

检查您的preferences对象(可能是null)。这可能是问题,因为其他String变量永远不为null,可以是空字符串("")。

您是否在此示例中错过了第二个preferencesActivity的初始化?

答案 1 :(得分:0)

String userName=preferences.getString("userid");
String password=preferences.getString("password");
Log.d("user : second", ""+userName);
Log.d("password : second", ""+password);

请你这样试试。

答案 2 :(得分:0)

在这两个活动中,只需使用它来获取SharedPreferences对象:

SharedPreferences prefs = getSharedPreferences("PREFS", Context.MODE_PRIVATE);

您可能尝试从不同的活动中访问不同的偏好文件。

或者只是使用

PreferenceManager.getDefaultSharedPreferences(this);

答案 3 :(得分:0)

我只存储一个整数值,你必须多于一个值..

PreferenceConnector.writeInteger(home.this, PreferenceConnector.com_id, homeComp_id);

要在其中使用的preferenceConnector类以下...

public class PreferenceConnector {

public static final String PREF_NAME = "Shared Preference";
public static final int MODE = Context.MODE_PRIVATE;

public static final String com_id = "com_id";

public static void writeBoolean(Context context, String key, boolean value) {
    getEditor(context).putBoolean(key, value).commit();
}

public static boolean readBoolean(Context context, String key, boolean defValue) {
    return getPreferences(context).getBoolean(key, defValue);
}

public static void writeInteger(Context context, String key, int value) {
    getEditor(context).putInt(key, value).commit();

}

public static int readInteger(Context context, String key, int defValue) {
    return getPreferences(context).getInt(key, defValue);
}

public static SharedPreferences getPreferences(Context context) {
    return context.getSharedPreferences(PREF_NAME, MODE);
}

public static Editor getEditor(Context context) {
    return getPreferences(context).edit();
}

}

然后你也将分享偏好值用于下面的其他活动......

 int Pref = PreferenceConnector.readInteger(mainpage.this, PreferenceConnector.com_id, 0);

希望上面的代码有用......