从Activity外部处理onActivityResult

时间:2011-02-15 09:11:12

标签: android android-activity android-intent

我正在尝试创建一个帮助器类来启动Activity并获取返回结果(startActivityForResult),以避免开发人员编写自己的onActivityResult代码并封装复杂的内部细节

ie:来电者的代码:

MyIntent i = new MyIntent();
i.getMyData(new OnData() { public void onData(Bundle data) {....} );

我尝试在MyIntent中创建一个“虚拟”Activity只是为了能够覆盖onActivityResult,但是需要在清单中声明活动,这是帮助程序类试图避免的。没有“setOnActivityResult”,这将是一个很好的选择。

那么,如何以编程方式创建Activity并“附加”它以使其具有有效状态?

创建new Activity()后,我想调用内部的“附加”活动。

2 个答案:

答案 0 :(得分:1)

  

那么,如何以编程方式创建一个Activity并“附加”它以使其具有有效状态?

这是不可能的,抱歉。

  

我正在尝试创建一个辅助类来启动一个Activity并获得返回结果(startActivityForResult),以避免开发人员编写自己的onActivityResult代码并封装复杂的内部细节。

这是不可能的,对不起。最接近的是条码扫描器集成JAR的工作原理 - 您将onActivityResult()委托给他们以解码从扫描仪活动中获得的结果。

答案 1 :(得分:0)

一个简单的回调可以替代吗?用户将回调放在库的静态字段中,并且库将在需要时调用此回调。最直接的实现可能是:

YourSdk.staticCallbackField=new OnData() { public void onData(Bundle data) {....});
MyIntent i = new MyIntent();
startActivity(i);

当SDK完成它的工作时,它会调用回调:

staticCallbackField.onData(data)

用户活动将在回调而不是onActivityResult中获取 Bundle data

您应该了解可能的活动生命周期问题。例如,如果android在后台重新创建用户活动,则应重新创建回调。