首页 > 解决方案 > 片段中的Android onActivityResult

问题描述

我尝试在片段中获得结果。片段中的代码

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (resultCode != Activity.RESULT_OK) return

    val bundle = data?.extras
    when (requestCode) {
        LicenseActivationActivity.REQUEST_RESULT_COUNT_ENTERPRISE ->
     //
    }
}

调用此代码。但也是 DrawerActivity 中的 onActivityResult 方法

仅在片段中调用 onActivityResult 吗?

更新

DrawerActivity 中的这段代码

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (resultCode == Activity.RESULT_OK) {
        WayBillsActivity.start(this)
        finish()
    }
}

出于某种原因,它也很满意,但只是在片段中的 onActivityResult 之后。

标签: androidkotlinfragmentstartactivityforresult

解决方案


在你的活动中调用这个

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    for (Fragment fragment : getSupportFragmentManager().getFragments()) {
        fragment.onActivityResult(requestCode, resultCode, data);
    }
}

然后调用片段

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  //super.onActivityResult(requestCode, resultCode, data); comment this unless you 

 }

推荐阅读