如何使用共享首选项?

时间:2013-12-03 07:36:29

标签: android sharedpreferences

我是android的新手。我正在使用Json开发一个应用程序。我想在不启动活动类的情况下将主活动中的字符串值传递给另一个类。我听说使用共享首选项有一些方法。我刚试过..但没有工作..我得到零点异常..这是我的代码...

confirm = check.AuthenticateUser(name, passwd);  
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Name",confirm);
editor.commit();

这里是我想发送“确认”(字符串变量)

的值的地方

以下代码显示了我想要获得该首选项的位置......实际上该类名为“ShortList”。

这是我试图获取值的代码

public class ShortList extends Activity  {

//ArrayList<HashMap<String, String>> arl;

  SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
  String cargivr = preferences.getString("Name","");
请某人帮助我..

4 个答案:

答案 0 :(得分:1)

public static String CREDENTIALS_FILENAME = "com.myapp.credentials";
public static String PIN = "pin";

public static void writeCredentials(Context c,String pin) {

        SharedPreferences credentialsPref = c.getSharedPreferences(CREDENTIALS_FILENAME, 0);
        SharedPreferences.Editor editor = credentialsPref.edit();
        editor.putString(PIN, pin);
        editor.commit();

    }

public static String readCredentials(Context c,String pin) {

        SharedPreferences credentialsPref = c.getSharedPreferences(CREDENTIALS_FILENAME, 0);
        SharedPreferences.Editor editor = credentialsPref.edit();
        return credentialsPref.getString(PIN, "default value"); 

    }

答案 1 :(得分:1)

MainActivity.java

SharedPreferences pref = getApplicationContext().getSharedPreferences("New",Context.MODE_PRIVATE);
Editor edit = pref.edit();
edit.putString("SomeKey", "SomeValue");
edit.commit();

SecondActivity.java

SharedPreferences prefs = getApplicationContext().getSharedPreferences("New",Context.MODE_PRIVATE);
String value = prefs.getString("SomeKey","DefaultValue");

还要确保在Android清单文件中添加了第二个活动详细信息 -

<activity
        android:name="com.example.projectName.SecondActivity"
        android:parentActivityName="com.example.sharedpref.MainActivity">        
</activity>

答案 2 :(得分:0)

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(ShortList.this);
String cargivr = preferences.getString("Name","");

答案 3 :(得分:0)

public class ShortList extends Activity  {

//ArrayList<HashMap<String, String>> arl;

  SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
  String cargivr = preferences.getString("Name","");

这里似乎是在初始化成员变量。

在活动生命周期中,Activity之前Context不能使用onCreate()。成员变量初始化太早,通常会导致getBaseContext()中的NPE。

preferencescargivr的初始化移至onCreate()或更高版本。