是否可以从片段创建共享Intent,以便在关闭选择器对话框时,它仍保留在调用片段本身中,而不是父片段中?
我有一个MainFragment,它有一个包含许多片段的ViewPager。比如说FragmentA、FragmentB、FragmentC。下面是MainFragment的一些代码片段
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = super.onCreateView(inflater, container, savedInstanceState).also {
setupPager()
}
private val fragmentList = arrayListOf<BaseFragment<*, *>>(
FragmentA(),
FragmentB(),
FragmentC(),
)
private fun setupPager() {
val adapter = SavvyViewPagerAdapter(
fragmentList,
childFragmentManager,
lifecycle
)
binding.mainViewPager.adapter = adapter
TabLayoutMediator(binding.pageIndicator, binding.mainViewPager) { tab, position ->
fragmentList[position].titleRes?.let {
tab.text = getString(it)
}
}.attach()
binding.mainViewPager.setCurrentItem(
fragmentList.indexOfFirst { it is FragmentB },
false
在FragmentB中,有一些元素的回收视图。单击回收视图中的任何项时,它将导航到FragmentBDetail。此操作是从MainPagerToFragmentBDetail提供的。如果此操作是从FragmentB提供给FragmentBDetail的,则它将不起作用。
现在,在FragmentBDetail中,我正在创建一个共享Intent。
val sendIntent: Intent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, value)
type = "text/plain"
}
val shareIntent = Intent.createChooser(sendIntent, null)
startActivity(shareIntent)
}
这将打开选择器对话框。但在关闭它时,它会返回到MainPagerFragment,并将FragmentB作为当前片段。在关闭对话框时,我希望它保留在FragmentBDetail中。如何实现此行为?
有人能帮忙吗?
1条答案
按热度按时间4xrmg8kj1#
我想如果你使用
startActivityForResult()
它会帮助你解决这个问题:然后在练习
FragmentBDetail
中,您可以覆盖onActivityResult
:现在,当选择器对话框关闭时,将在FragmentBDetail中调用onActivityResult(),并且您可以留在片段中。
你必须给予
SHARE_REQUEST_CODE
一个值。