2015-11-19 22 views
0

之間SharedPreferences我設置一個BroadcastReceiver偏好,但我不能AppCompatActivity閱讀。 我確實看了一些帖子,但我無法做到這一點。 活性和廣播接收器在相同的應用程序(相同的包名稱) 在一個BroadcastReceiver我對方法的onReceive此代碼:我不能共享廣播接收器和AppCompatActivity

SharedPreferences prefs = context.getApplicationContext().getSharedPreferences(PROPERTIES.SHARENAME, 
       context.MODE_PRIVATE); 
prefs.edit().putBoolean("runnig", true).commit(); 

和活動我有:

SharedPreferences prefs1 =getApplicationContext().getSharedPreferences(PROPERTIES.SHARENAME, 
         MODE_PRIVATE); 

boolean corriendo= prefs1.getBoolean("running",false); 

但變量corriendo仍然是錯誤的。

我tryid與context.getShared ......在廣播接收器,使用下適用的承諾,在活動避免getApplicationContext(),我不能這樣做的工作。
非常感謝!

回答

1

貌似你犯了一個錯字:

比較:

prefs.edit().putBoolean("runnig", true).commit(); 
boolean corriendo= prefs1.getBoolean("running",false); 

現在只要相關位:

putBoolean("runnig", true) 
getBoolean("running",false) 

TLDR;您正在閱讀並寫入不同的密鑰。

+0

OMG,你把所有的原因,我沒有檢查3次,我沒有發現的個體差異。它現在工作! – Tito

+0

不用擔心;東西發生。正如避免將來出現這種情況的一般技巧一樣:爲您的關鍵名稱設置一個常量。喜歡的東西:'公共靜態最後絃樂PREF_KEY_RUNNING = 「運行」',然後更新您的看跌期權,並得到充分利用這個常量:'putBoolean(PREF_KEY_RUNNING,真)'和'getBoolean(PREF_KEY_RUNNING,假)'。 –