Android的 – 如何从其他活动获得共享首选项?

在我的应用程序中有一个button(activity1)。 当用户点击它,我想在游戏中没有声音。 我以为我应该通过在button的onClick方法的activity1中使用sharedpreferences来做到这一点:

SharedPreferences.Editor editor = mPrefs.edit(); editor.putString("sound","1"); editor.commit(); 

声音和游戏开始于另一个活动(activity2)。 我需要阅读那里的共享首选集,但我不知道该怎么做。

谢谢

编辑

我已经离开了这条线:

 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Activity1.this); 

根据你在Activity2.class的帮助,我阅读了这样的喜好:

 SharedPreferences myPrefs = getSharedPreferences("Activity1", MODE_PRIVATE); //Activity1.class String ifsound = myPrefs.getString("sound",""); if (ifsound.equals("1")) { Toast.makeText(Activity1.this, "1", Toast.LENGTH_LONG).show(); } else { Toast.makeText(Activity1.this, "0", Toast.LENGTH_LONG).show(); } 
  1. 在Activity1.class我点击button设置“声音”为“1”。
  2. 我点击另一个打开Activity2.class的btn,我总是在Toast msg中总是得到“0”。

Solutions Collecting From Web of "Android的 – 如何从其他活动获得共享首选项?"

使用以下function添加共享首选项并从所有活动中获取已保存的值。

 public static void setDefaults(String key, String value, Context context) { SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences.Editor editor = preferences.edit(); editor.putString(key, value); editor.commit(); } public static String getDefaults(String key, Context context) { SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); return preferences.getString(key, null); } 

在Activity1中,在保存偏好时使用:

 SharedPreferences mPrefs = getSharedPreferences("IDvalue", 0); //Give any name for //preference as I have given "IDvalue" and value 0. SharedPreferences.Editor editor = mPrefs.edit(); editor.putString(key, value); // give key value as "sound" you mentioned and value what you // to want give as "1" in you mentioned editor.commit(); 

在Activity2中检索共享值时使用:

 SharedPreferences mPrefs = getSharedPreferences("IDvalue",0); String str = mPrefs.getString("sound", ""); if (str.equals("1")) { // Do what you want } else { // Do what you want } 

你可以保存一个活动:

 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); SharedPreferences.Editor editor = prefs.edit(); editor.putString("NameOfShared", "Value"); editor.commit(); 

从其他活动中获得它:

 final SharedPreferences mSharedPreference= PreferenceManager.getDefaultSharedPreferences(getBaseContext()); String value=(mSharedPreference.getString("NameOfShared", "Default_Value")); 
 SharedPreferences myPrefs = getSharedPreferences("filename", MODE_PRIVATE); String ipAdrs=myPrefs.getString("key", ""); 

如果密钥内部没有任何值,则会给出默认值("key", "")

 SharedPrefernces prefs = getPreferences(); String sound = prefs.getString("sound"); 

确保你已经提到了相同的文件名称的偏好文件。

太简单! 但请记住一点,您必须在创build类似的活动中定义首选项名称public static
public static String Preference = "yourPreferenceName";

然后打电话给另一个这样的活动

 SharedPreferences myPreferences =getSharedPreferences("YourprefereneName",MODE_PRIVATE) 

首先在MainActivity中为创build上下文创build方法:

  public Context getContext(){ Context mContext = MainActivity.this; return mContext; } 

在你想要的每个课堂中使用这个:

 MainActivity mContext = new MainActivity(); SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext.getContext());