我正在尝试创建一个帮助器类来启动Activity
并获取返回结果(startActivityForResult
),以避免开发人员编写自己的onActivityResult
代码并封装复杂的内部细节
ie:来电者的代码:
MyIntent i = new MyIntent();
i.getMyData(new OnData() { public void onData(Bundle data) {....} );
我尝试在MyIntent中创建一个“虚拟”Activity
只是为了能够覆盖onActivityResult
,但是需要在清单中声明活动,这是帮助程序类试图避免的。没有“setOnActivityResult”,这将是一个很好的选择。
那么,如何以编程方式创建Activity
并“附加”它以使其具有有效状态?
创建new Activity()
后,我想调用内部的“附加”活动。
答案 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在后台重新创建用户活动,则应重新创建回调。