2012-03-11 96 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等。