从片段调用StartinentSenderForResult(不使用现有活动)(Android计费v3)

从片段调用StartinentSenderForResult(不使用现有活动)(Android计费v3),android,android-fragments,android-activity,android-billing,Android,Android Fragments,Android Activity,Android Billing,根据这一问题: 调用startIntentSenderForResult需要传递实现onActivityResult(…)的活动。片段无法实现这一点,因此如果要从一个方法调用该方法,则必须通过一个活动(可能是创建片段的活动)对其进行管道传输 我的问题与现有问题的不同之处在于,我没有一个可以在ActivityResult上实现的易于访问的活动。我的片段是由另一个片段创建的,在该片段和启动该过程的“主要”活动之间有很多逻辑和域对象解码等 因此,出于实际和体系结构的原因,我真的不希望回调通过管道进入

根据这一问题:

调用startIntentSenderForResult需要传递实现onActivityResult(…)的活动。片段无法实现这一点,因此如果要从一个方法调用该方法,则必须通过一个活动(可能是创建片段的活动)对其进行管道传输

我的问题与现有问题的不同之处在于,我没有一个可以在ActivityResult上实现的易于访问的活动。我的片段是由另一个片段创建的,在该片段和启动该过程的“主要”活动之间有很多逻辑和域对象解码等

因此,出于实际和体系结构的原因,我真的不希望回调通过管道进入该活动,而返回到调用片段中

我在想这样的事情:

  • 执行调用的fragment创建一个临时活动,其中包含对该片段的引用,并实现onActivityResult,该函数处理回调并路由回片段

非常感谢任何类型的帮助。

除了活动的
onActivityResult
之外,
活动的默认行为(如中所示)是将
onActivityResult
传递给所有附加的片段'
onActivityResult
。因此,只需处理片段中的
onActivityResult


注意:如果您的活动确实处理了
onActivityResult
,请确保它调用
super.onActivityResult
,或者片段的
onActivityResult
调用将不会发生。

Hmm,因此我想这意味着传递一个对我的主要活动的引用,并通过Activity->fragment->fragment链实现onActivityResult。我会看看我是否能让它工作。只要在你的片段中调用
getActivity()
,它就会工作。哦,你的第二段,我不明白。。。“或者片段的onActivityResult调用将发生”——这不是我想要实现的吗?孔夫塞达,这似乎容易多了。谢谢根据它链接的源文件,这个答案是错误的。FragmentActivity不会将onActivityResult传递给所有连接的片段。它通过使用requestCode的上16位来存储调用片段的索引,将其传递给一个片段,但前提是您从片段而不是活动调用startActivityForResult()。由于该问题涉及startIntentSenderForResult(),它仅在Activity上可用,并且派生片段无法查询自己的索引,因此无法调用Activity.startIntentSenderForResult并在Fragment.OnActivityResult中接收结果。请看这个问题:它有许多答案,其中一个可能是适合您的答案。