2011-05-31 86 views
23

在我的应用程序中有一个按钮(activity1)。当用户点击它时,我不想在游戏中发出声音。我想我应该在按钮的onclick方法使用sharedpreferences在活动1做到这一点:Android - 我如何从其他活动获取共享首选项?

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

的声音和游戏的另一个活动(活性2)开始。我需要阅读那里的共享首选项,但我不知道如何去做。

感谢

编辑

我已经离开这一行了:

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 i clic k按钮将“声音”设置为“1”。
  2. 我点击另一个打开Activity2.class的btn,我总是在Toast msg中始终获得“0”。

回答

52

使用下面的函数从所有活动添加共享偏好和获取保存的值。

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); 
} 
+0

我该如何使用这些函数来访问共享首选项值? – 2016-05-28 23:57:01

+0

非常感谢! – 2017-11-26 14:37:37

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

确保,你所提到的首选项文件相同的文件名。

2
SharedPreferences myPrefs = getSharedPreferences("filename", MODE_PRIVATE);   
String ipAdrs=myPrefs.getString("key", ""); 

如果关键亘古不甲肝任何价值里面它的Wii给出的默认值,美中值HAVA给("key", "")

10

在活动1,同时节省偏好,使用:

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

在活性2在检索共同的价值观使用:

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

你可以将它保存一个活动:

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")); 
0

太容易了!但保持一件事记住,你必须定义首名在活动公共静态,你创建喜欢
public static String Preference = "yourPreferenceName";

然后在另一个活动调用此类

SharedPreferences myPreferences =getSharedPreferences("YourprefereneName",MODE_PRIVATE) 
0

首先,创建方法在MainActivity的歌厅背景:

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

并在每一个C

使用本lass你想要的:

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