-2

我正在创建一个SharedPreferences,只有当我像这样启动 Activity 时它才能工作:

myIntent.putExtra("prefName", MYPREFS);
startActivity(myIntent);

但是我的 SharedPreferences 在我保存并回击几次后无法正常工作,进入菜单页面并转到我想要获取我的偏好的页面。

任何人都可以帮助我吗?

下面的代码:

这是我保存偏好的地方:

String MYPREFS = "MyPref";
SharedPreferences mySharedPreferences;
SharedPreferences.Editor myEditor;

在 onCreate 里面:

mySharedPreferences = getSharedPreferences(MYPREFS,0);
myEditor = mySharedPreferences.edit();

内部按钮 onClickListener:

 myEditor.putString("address", AddressET.getText().toString());
    myEditor.putString("contact", ContactET.getText().toString());
    myEditor.commit();

Intent myIntent = new Intent(myContext, nok_individual_particular.class);
myIntent.putExtra("prefName", MYPREFS);
startActivity(myIntent);

这是我传递给的活动:

SharedPreferences mySharedPreferences;

在 onCreate 里面:

Intent myReceivingIntent = getIntent();
String myPREFName = myReceivingIntent.getStringExtra("prefName");

mySharedPreferences = getSharedPreferences(myPREFName, 0);

applySavedPreferences();

在 applySavedPreferences 方法中:

 String addressValue = mySharedPreferences.getString("address", "Jack Smith");
String contactValue = mySharedPreferences.getString("contact", "Jack Smith");   

addressTV.setText(addressValue);
contactTV.setText(contactValue);
4

6 回答 6

3

SharedPreferences:这就是它的工作原理
要保存您的数据

SharedPreferences sPrefs = getSharedPreferences("prefsName", 0);
SharedPreferences.Editor editor = sPrefs.edit();
editor.putString("valueName", "value");
editor.commit();

要检索您的数据:

SharedPreferences sPrefs = getSharedPreferences("prefsName", 0);
String strMyData = sPrefs.getString("valueName", "default value");

上面的示例是如何设置字符串并检索它。

于 2012-08-02T07:25:16.843 回答
2

您没有使用SharedPreferences. 在您的示例中,您将额外的内容传递给活动,但这只会使新活动的值可用,它不会将值保存到SharedPreferences.

要使用SharedPreferences,您必须执行以下操作:

节省

PreferenceManager.getDefaultSharedPreferences(this).edit().putString("prefName", "String to save").commit();

得到

String value = PreferenceManager.getDefaultSharedPreferences(this).getString("prefName"), "default value");
于 2012-08-02T07:12:12.620 回答
0

我更喜欢使用 SharedPreferences 来保存我的数据并在我的整个课程中使用它,而且它们将被保存到设备中,即使在应用程序被终止后也可以使用它们......这是你的一个例子!

//Some String that I should remember, I am just using the package name for now
String app = this.getPackageName();/*This is going to be used more like a file to save my stuff to*/
//Setting our sharedpreferences
SharedPreferences sha = sha = getApplicationContext().getSharedPreferences(app, SherlockActivity.MODE_PRIVATE);


String myString = "This is the String that you want to save so you can use among your classes"

//Now we call in an editor for that SharedPreferences so we can write and delete stuff from it .

Editor edit = sha.edit();

//Now we insert our String.
edit.putString("Something_you_can_remember" , myString);//You will need the "Something_you_can_remember" a few lines ahead , so remember it !
edit.apply(); //Or we can use edit.commit() , but I prefer apply()

//Now our String is saved ! So lets read it !

String whatever = sha.getString("Something_you_can_remember" , "The String incase myString didn't even exist , saves you from a NullPointerException");

//Here we go ! Now we have our String saved and can be readable among the classes !
//Also , if you wanted to delete that String or whatever you "put" in there , you can call

edit.remove("Something_you_can_remember"); //or edit.clear() to remove all the values stored !

希望这可以帮助 !

于 2012-12-27T09:17:12.983 回答
0

mySharedPreferences.edit();

mySharedPreferences.commit();

应该是你的最后一行。这使您能够保存并关闭您已编辑的 SharedPreferences 文件。

好吧,您不需要以意图和所有方式传递 sharedprefs。它将在您的应用程序中的所有活动中可用。

只需调用SharedPreferences my_prefs= getSharedPreferences("Pref_name", 0);,然后您就可以引用该 SharedPreferences 文件,然后您就可以从中检索值。

于 2012-08-02T07:14:30.553 回答
0

您不需要通过意图传递 SharedPreferences,因为 SharedPreferences 可用于整个应用程序并且任何活动都可以访问它。

你可以参考下面的例子:

通过给他们您选择的名称来创建 SharedPreferences:

SharedPreferences pref = getSharedPreferences("MyPref", MODE_PRIVATE);

或使用默认 SharedPreferences:

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);

通过上述任何方法在代码中的任何位置使用您的首选项文件。无需传递到不同的活动。

一旦您调用上述任何方法,如果您的应用程序不存在该名称的首选项文件,android 将为您创建一个。

于 2017-08-21T06:06:16.100 回答
0

节省

SharedPreferences sp = getSharedPreferences("key", 0);
 SharedPreferences.Editor sedt = sp.edit();
 sedt.putString("valueName", "String to save");
 sedt.commit();

得到

 SharedPreferences sp = getSharedPreferences("key", 0);
 String valueName = sp.getString("valueName","");
于 2017-07-19T16:11:30.153 回答