片段中的Android onActivityResult

use*_*307 5 android fragment kotlin startactivityforresult

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

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 ->
     //
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码被调用。而且还有 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()
    }
}
Run Code Online (Sandbox Code Playgroud)

不知为何,也满足了,不过是在fragment中的onActivityResult之后。

Sye*_*der 6

在你的 Activity 中调用这个

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

然后调用fragment

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

 }
Run Code Online (Sandbox Code Playgroud)


小智 2

在抽屉活动中添加代码

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

}

   **fragment.super.onActivityResult(requestCode, resultCode, data)**
Run Code Online (Sandbox Code Playgroud)

然后你的onActivityResult片段方法称为