Android Intent活动回调

时间:2015-02-24 14:43:42

标签: android android-intent android-activity android-fragments

我正在开发一个基本上由自定义View组成的Android模块。第三方可以放入他们的任何活动中。 此模块包含配置活动(基于PreferenceActivity)。

鉴于您无法从View启动活动,该模块会调用' openConfig(Intent intent)'在它显示的活动上。此活动充当模块的委托。

到目前为止工作正常(尽管我非常喜欢在内部处理所有内容的模块,不需要委托方法,但我认为这是不可能的)。 但是,我需要从首选项活动到模块的某种回调,以便在更改设置时通知模块。

我在考虑将模块的主类作为委托人添加到偏好活动中;

ConfigActivity a = new ConfigActivity();
a.testVar = "testtest";
Intent intent = new Intent(getContext(), a.getClass());
delegate.handleConfigAction(intent); //

但是,这个只有一个简单的String(而不是一个接口)的测试显示,在活动开始后,字符串不会被设置。

第二个想法是使用' putExtra()'关于意图,但这并不适合用例,因为代表我想放置一个View,而不是一个可序列化的数据对象。

我有什么方法可以在内部处理这个问题吗?我知道' onActivityResult()'函数(http://developer.android.com/training/basics/intents/result.html),但这意味着使用我的模块的第三方开发人员需要处理这个问题,这显然是需要避免的。

任何帮助都将受到高度赞赏!

编辑:最终解决方案 最后,我将模块从View更改为Fragment,现在可以更好地处理" child"活动等。从片段中启动活动时,' onActivityResult'功能很好地完成了手头的任务。

1 个答案:

答案 0 :(得分:1)

您可以使用ActivityView开始Context,如下所示:

@Override
public void onClick() {
    Intent intent = new Intent(getContext(), ConfigActivity.class);
    intent.putExtra("testVar", "testtest");
    getContext().startActivity(intent);
}

您可以使用onWindowVisibilityChanged()方法来阅读ConfigActivity中设置的配置,以使View更改其行为。