Android 导航组件和文件选择器

Android Navigation Component and File Chooser

我正在使用 Android 带有两个片段“片段 A”和“片段 B”的导航

在“片段 A”中我打开“片段 B”:

findNavController().navigate(R.id.action_fragmenta_to_fragmentb) 

在“片段 B”中,我使用 startActivityForResult:

打开一个文件选择器
val openFileIntent = Intent(Intent.ACTION_OPEN_DOCUMENT)
openFileIntent.addCategory(Intent.CATEGORY_OPENABLE)
openFileIntent.type = "application/json"
val mimeTypes = arrayOf("application/octet-stream")
openFileIntent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes)
        
startActivityForResult(
   Intent.createChooser(
   openFileIntent,
   getString(R.string.load_from_file)), 909)

在“片段 B”中,选择文件后,我收到了预期的 onActivityResult:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 
   //Do something with data from the file
}

我不明白的是,我现在看到的是“片段 A”,而不是停留在“片段 B”中。我是在做错什么,还是在将导航组件与 startActivityForResult 一起使用时出现问题?有没有人有办法让应用程序留在调用 startActivityForResult 的片段中?我很难找到有关将导航组件与在应用程序外部启动进程(即文件选择器、调用程序应用程序)的 Intents 集成的文档。

正如 Ians 对我的问题的评论所暗示的那样,我在主要 activity 中听取了一些事件,并在某些情况下以编程方式导航到“片段 A”。删除此导航后,应用程序在按我的预期选择文件后停留在“片段 B”中。