2011-02-15 187 views
7

我试图做一个帮助类来启动Activity并获得返回结果(startActivityForResult),以避免开发人员编写自己的onActivityResult代码并封装复杂的内部细节。从活动外处理onActivityResult

即:调用者的代码:

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

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

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

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

+0

您是否找到解决此问题的解决方案? – captaindroid 2014-11-26 05:31:51

回答

1

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

这是不可能的,对不起。

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

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

+1

我也尝试相同的事情,只是检查http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityResultListener.html我用它来调用自定义类中的onActivityResult()方法,但它不是工作...如果你有任何想法...然后plz发布.. :) – 2012-03-29 19:33:29

0

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

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

当你完成SDK它的工作它会调用回调函数:

staticCallbackField.onData(data) 

用户活动将得到捆数据回调,而不是onActivityResult。

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

相关问题