【问题标题】:Fragment of Fragment starting Activity for result Issue结果问题的片段开始活动的片段
【发布时间】:2018-08-31 08:54:21
【问题描述】:

我有 ParentActivity 包含 3 个片段 附加到它的 ViewPagerAdapter。然后其中一个片段有 2 个其他片段(在该片段内的这些片段之间有 2 个按钮切换)。

当我在这两个(子)片段之一中使用startActivityForResult(newIntent, 201) 创建意图时,当我完成由finish() 启动的活动时,在ParentActivitys 中,onActivityResult() 将返回requestCode 65737。它有什么问题?

子片段

addAddressButton.setOnClickListener {
            val addressCreateActivityIntent = Intent(context, AddressCreationActivity::class.java)
            startActivityForResult(addressCreateActivityIntent, 201)
        }

家长活动

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        //addAddressActivity
        if (requestCode == 201){
            if (((pagerAdapter!!.getItem(1)) as OrderCartPaymentFragment).view != null){
                createLog("DeliveryAddress ", "RefreshingAddressData -> OrderCart")
                ((pagerAdapter!!.getItem(1)) as OrderCartPaymentFragment).refreshDeliveryFragmentData()
            }
        }
    }

这意味着,onActivityResult() 将在片段内调用刷新,该片段是该子片段的父片段。作为连锁反应,refreshDeliveryFragment() 将调用这两个子片段之一来刷新它们的 recyclerview 数据。

【问题讨论】:

  • 你能把你的片段和ParentActivity的代码贴出来吗?

标签: android android-activity kotlin


【解决方案1】:

这就是答案

https://stackoverflow.com/a/10564488/9313652

你应该改变:

startActivityForResult(newIntent, 201)

到:

getActivity().startActivityForResult(newIntent, 201)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多