2011-05-31 41 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());