2013-03-11 47 views
0

我有一個活動,有onReceive(電池廣播)和服務,將數據插入共享首選項。然後從活動中獲得這些數據。我的問題是,只有在更改手機方向時纔會刷新數據。如果我不這樣做,Activity會顯示舊的Shared Preferences數據。任何幫助將不勝感激。強制活動重新加載(如方向一)

我想知道什麼:

  • 如何更新我的Broadscast onReceive法活動。
  • 爲什麼SharedPreferences未正確表示?
+0

您註冊接收者在你的活動或你的清單? – 2013-03-11 13:28:23

+0

是的活動,和電池水平,溫度更新在我的活動,巴士共享喜好不。也許我需要延遲一段時間?然後嘗試訪問共享首選項? – whiteLT 2013-03-11 13:29:25

回答

1

做到這一點,我只是請手動重新啓動活動......這裏是我用

public void reload() { 

    Intent intent = getIntent(); 
    overridePendingTransition(0, 0); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
    finish(); 

    overridePendingTransition(0, 0); 
    startActivity(intent); 
} 

使用這種方法就不會有動畫由於過渡的實現方法具..

+0

不,我不知道爲什麼,但沒有任何反應 – whiteLT 2013-03-11 13:54:10

+0

檢查你的oncreate方法..因爲我沒有動畫,所以不會有動畫,所以視覺上不會有任何變化..你可以刪除secon的第三和第五行的方法 – stinepike 2013-03-11 14:04:04

+0

我需要使用這個方法int onCreate?它有可能在OnReceive中使用它? – whiteLT 2013-03-11 14:09:22

1

兩個想法:

1)當你在你的服務編輯共享偏好,一定要打電話apply()commit()實際更新您的共享偏好。

2)在您的活動中,請確保您通過registerSharedPreferenceListener註冊了一個共享偏好聽衆,以便您知道何時在您的活動中更新了您的偏好。

+0

1)選中後,如果不調用,則在更改方向時文本不會更改。 2)現在要做到這一點:) – whiteLT 2013-03-11 13:47:46

+0

如何在onReceive方法中實現共享偏好偵聽器? – whiteLT 2013-03-11 14:53:50

+0

你在你的活動中實現它。 – 2013-03-11 15:08:07

1

當您旋轉手機時,活動被重新創建。你可以完成,並重新啓動您的活動:

finish(); 
startActivity(getIntent()); 

我不知道這是否是您的情況最好的選擇,但我刷新我的活動與使用該Web服務,它工作正常!

+0

我得到關閉(類似於強制關閉,但只是不強制關閉(也許是因爲測試))。也許我不能在OnReceive方法上使用它? – whiteLT 2013-03-11 13:46:12

+0

固定力量關閉,但仍不會更新 – whiteLT 2013-03-11 13:58:17

+0

您有沒有可以在OnReceive中使用的示例? – whiteLT 2013-03-11 14:07:20