从另一个Activity中调用PreferenceActivity Activity中的方法

3

你好,感谢您的帮助。

我有以下情况。

在我的应用程序中,我使用PreferenceActivity来显示和允许更改设置,我们称之为 PreferenceActivity A

如果用户选择特定的首选项,则会启动新的Activity,我们称之为 Activity B (A未被销毁)。

我需要做的是从Activity B内部调用PreferenceActivity A的方法。

请注意:PreferenceActivity A中的方法不能是静态的。

非常感谢任何帮助。

编辑编辑编辑编辑编辑编辑

这是如何启动Activty B:

当用户在PreferenceActivity A屏幕上点击相应的项目时,将触发意图。

 <PreferenceScreen
        android:key="addstocks"
        android:summary="Click here to add stocks"
        android:title="Add stocks" >
        <intent
            android:targetClass="com.stocktickerwidget.QuotesActivity"
            android:targetPackage="com.stocktickerwidget" />

1
您需要将参数传递给方法吗?该方法是否需要向调用者返回某些内容?调用此方法的目的是什么(例如,仅是为了在用户返回到Activity A时看到不同的内容)? - Karakuri
@Karakuri 不需要传递任何参数。由于调用该方法,Activity A 的外观将发生变化。 - Lisa Anne
1
在这种情况下,我建议使用startActivityForResult(),返回结果并在onActivityResult()中更改外观。你可能可以使用Handler和Messenger,但我认为第一种方法更容易和更清晰。 - Karakuri
@Karakuri 抱歉,我无法使用 startActivityForResult(),因为 Activity B 是以您在编辑后的代码中所看到的方式启动的。 - Lisa Anne
是的,你可以在那个偏好设置上设置一个OnPreferenceClickListener,并自己启动ActivityB。 - Karakuri
1个回答

2

不要像那样启动活动,而是在首选项上手动设置OnPreferenceClickListener,并使用startActivityForResult()

private static final int RESUEST_CODE = 1;
protected void onCreate() {
    /* ... */
    Preference pref = getPreferenceManager().findPreference("addstocks");
    pref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
        public boolean onPreferenceClick(Preference preference() {
            if (preference.getKey().equals("addstocks") {
                startActivityB();
                return true;
            }
            return false;
        }
    });
}

private void startActivityB() {
    Intent intent = new Intent(this, ActivityB.class);
    startActivityForResult(intent, REQUEST_CODE);
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        // do something here
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接