2012-03-11 175 views
1

在我的活動,對用戶的喜好畫面請求調用一個方法,我稱之爲:安卓:從調用活動

startActivity(new Intent(this, Preferences.class)); 

Preferences類的定義是這樣的:

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener { 
    ... 
    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { 
     ... 
    } 

} 

我需要實現OnSharedPreferenceChangeListener在我的Preferences類中,因爲我希望能夠 - 例如 - 基於特定的選擇禁用首選項。 但我需要在我的主要活動中實現它,以對首選項更改作出反應。

不幸的是,onSharedPreferenceChanged()僅在我的首選項類中觸發,而不在我的主要活動中觸發:我如何強制它在bot動作中被觸發?

或者 - 我如何手動調用onPreredPreferenceChanged()在我的主要活動從偏好活動onSharedPreferenceChanged()?

回答

2

,您可以改變首選項註冊一個監聽器:

SharedPreferences prefs = PreferenceManager 
    .getDefaultSharedPreferences(this); 
prefs.registerOnSharedPreferenceChangeListener(this); 

,然後你會實現你的活動SharedPreferences.OnSharedPreferenceChangeListener,用自己的方法onSharedPreferenceChanged

+0

謝謝!我在我的主要活動中已經做了registerOnSharedPreferenceChangeListener(),但由於某種原因它被註釋掉了!感謝您的支持...... – MarcoS 2012-03-11 18:07:45

0

如果你想讓兩個活動都可以訪問某些功能,你最好通過將這個代碼包含到一個可以從任何地方調用的靜態方法來實現。在Android中,活動是分開的,您並不真正擁有從一項活動訪問其他活動實例的權限。在主要活動

1

那麼,觀察目前不活躍的活動中的偏好變化是沒有意義的。您應該處理主要活動的生命週期事件,例如onResume,onRestart等。