Android:从调用activity调用方法

时间:2012-03-11 17:48:06

标签: android android-activity

在我的活动中,根据用户的偏好请求屏幕,我打电话:

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

Preferences类定义如下:

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

}

我需要在我的Preferences类中实现OnSharedPreferenceChangeListener,因为我希望能够 - 例如 - 根据特定选择禁用首选项。 但是我需要在我的主Activity中实现它,以对偏好变化作出反应。

不幸的是onSharedPreferenceChanged()仅在我的Preferences类中触发,而不是在我的主要活动中触发:如何强制它在机器人活动中被触发?

或者 - 如何从首选项活动中的onSharedPreferenceChanged()手动调用主活动中的onSharedPreferenceChanged()?

3 个答案:

答案 0 :(得分:2)

在您的主要活动中,您可以为prefs更改注册一个监听器:

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

然后您将使用自己的SharedPreferences.OnSharedPreferenceChangeListener方法在您的活动中实施onSharedPreferenceChanged

答案 1 :(得分:1)

那么,在目前没有“活跃”的活动中观察偏好变化几乎没有意义。您应该处理主要活动的生命周期事件,例如onResumeonRestart等。

答案 2 :(得分:0)

如果要从两个活动中访问某些功能,最好将此代码包含在可以从任何地方调用的静态方法中。在Android活动中解耦,您实际上无法从一个活动访问其他活动的实例。