2012-07-02 57 views
1

我有一個類PreferenceClass,它擴展了PreferenceActivity。這個類的代碼如下:SharedPreference in non-activity class

public class Preferenceclass extends PreferenceActivity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // setContentView(R.layout.main2); 
    addPreferencesFromResource(R.layout.preferences); 

}} 

我也有非活性類Shakelistener它實現SensorListener。這個類的代碼如下:

public class Shakelistener implements SensorListener { 
    public void onSensorChanged(int sensor, float[] values) { 
    // Some code 
    }} 

我需要能夠從這個非活性類訪問喜好,但我不知道如何做到這一點。

編輯

這是我用來訪問共享偏好代碼:

String PREF_FILE_NAME = "preferences"; 

    SharedPreferences pref = mContext.getSharedPreferences(PREF_FILE_NAME , Context.MODE_PRIVATE); 
    String myListPreference = pref.getString("listpref", "default choice"); 
    boolean cb = pref.getBoolean("checkBox", false); 
    Toast.makeText(mContext, myListPreference+"-"+cb, Toast.LENGTH_LONG).show(); 

這段代碼是給沒有錯誤,但它總是評估舉杯「默認選擇假」 。

我應該在這種情況下使用哪個PREF_FILE_NAME?

回答

2

在非活動類的構造函數中取一個Context的實例並使用它來調用所有這些方法。

事情是這樣的:

public class NonActivityClass implements SensorListener{ 
Context mContext; 
public NonActivtiyClass(Context context) { 
this.mContext = context; 
} 
//Rest of your code 
} 

那麼這樣做是創建一個類的對象,你Activtiy的onCreate()

NonActivityClass nac = new NonActivityClass(this); 
+0

拉哈夫先生,你能不能給我一個簡短的想法我怎麼能做到這一點... 或者如果你給我一些關於我的問題的任何教程的鏈接將是偉大的。 – void

+0

然後我將如何訪問共享偏好..? – void

+0

我不會爲你編寫你的應用程序。使用mContext變量調用您在Activity中使用的所有函數,就像您在那裏使用它們一樣。 –