- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用新的 Fragment Result API 的 fragment F 如何从其他 2 个 fragment 获取结果:A、B 从 A 而不是 B 获取结果,因为 B 有不同的父 FragmentManager(我没有知道为什么) ?怎么会是那样? 2 个 fragment 以相同的方式调用,但它们最终具有相同的 Activity 但不同的 FragmentManager ?函数调用如下:
//这行不通。结果设置后不调用监听器
private fun navigateToItemLocation() {
setFragmentResultListener(REQUEST_LOCATION_KEY) { s: String, bundle: Bundle ->
val locationId = bundle.getParcelable<ParcelUuid>(LOCATION_ID)!!.uuid
viewModel.viewModelScope.launch(Dispatchers.IO) {
val location = LocationRepository().get(locationId)!!
changeItemLocation(location)
}
}
val action = ItemRegistrationPagerHolderDirections.actionNavItemRegistrationPagerToNavStockLocationSelection()
findNavController().navigate(action)
}
//这很好用:
private fun navigateToItemDetails(item: Item2) {
setFragmentResultListener(SELECTED_ITEM_KEY) { s: String, bundle: Bundle ->
val propertySetId = bundle.getParcelable<ParcelUuid>(SELECTED_ITEM_SET_ID)!!.uuid
clearFragmentResultListener(SELECTED_ITEM_KEY)
viewModel.viewModelScope.launch(Dispatchers.IO) {
val repository = PropertySetRepository()
val propertySet = repository.get(propertySetId)!!
val propertySetInfo = ItemFactory.loadPropertySetInfo(propertySet)
withContext(Dispatchers.Main) { setPackageCode(null) }
selectItem(item.item, propertySetInfo, item.description, null)
}
}
val action = ItemRegistrationPagerHolderDirections.actionNavItemRegistrationToNavStockItemDetails(ParcelUuid(item.item.id), true)
findNavController().navigate(action)
}
fragment A 和 B 都在一个单独的动态特征中。我遇到的唯一问题是调用以下函数时:
fun onSelect() {
viewModel.pickedLocation.value = (viewModel.selectedLocation as? LocationExt2?)?.location
val result = bundleOf(Pair(LOCATION_ID, ParcelUuid(viewModel.pickedLocation.value!!.id)))
setFragmentResult(REQUEST_LOCATION_KEY, result)
findNavController().popBackStack()
}
setFragmentResult(REQUEST_LOCATION_KEY, result)
不产生任何结果,因为 FragmentManager 与调用 Fragment 不同。 fragment A 中的相同方法是:
private fun onSetSelected(id: UUID) {
propertySets.removeObservers(viewLifecycleOwner)
adapter.tracker = null
setFragmentResult(SELECTED_ITEM_KEY, bundleOf(Pair(SELECTED_ITEM_SET_ID, ParcelUuid(id))))
findNavController().popBackStack()
}
作为临时解决方法,我用 Activity.supportFragmentManager.setFragmentResultListener 替换了对 Fragment 的 FragmentManager 的调用。它有效,但我仍然不明白为什么 fragment A 和 B 的行为不同......
最佳答案
检查您监听 fragment 结果的 fragment 和您设置结果的 fragment 是否在相同 fragment 管理器中。
如果您同时使用 Activity.getSupportFragmentManager()
或 Fragment.getParentFragmentManager()
和 Fragment.getChildFragmentManager()
.
关于Android FragmentManager 和 Fragment Result API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65548478/
我正在尝试在使用 androidX 的应用中进行设置。 我的问题是,当我尝试使用 PlaceAutocompleteFragment 时出现错误,因为它是来自 android.app.fragment
是否有人注意到 Android 11 的生命周期发生了任何明显的变化? 我的应用程序在 Android 11 之前的操作系统上运行良好,但在我的 Pixel 4 上每次都因错误而崩溃: E/Andro
我只是将项目移至androidX。我使用android studio refactor-> upgrade到androidX。 TargetSDK已经28岁了,并且工作正常。所以没想到会有很多错误。但
我正在学习 Android 开发。我卡在了本应非常简单的事情上。 我正在创建一个包含一个 Activity、2 个 fragment 和 1 个界面的应用。 android:minSdkVersion
我正在尝试获取一个对话框来警告用户应以横向模式查看屏幕。我有一个对话框类和我的 Activity 调用该对话框,但它提示 show(FragmentManager, String) 不适用于 show
我有一些嵌套的 fragment ,我想在 FragmentTabHost 内显示一个 Fragment。 在 FragmentTabHost setup(...) 方法中,第二个参数应该是 Frag
伙计们。 我为 Android API 14 及更高版本开发了一个应用程序,但我想使用 Android 支持库中的 ViewPager。 ViewPager 需要在构造函数中使用 android.su
FragmentManager manager = getFragmentManager(); 报错 required : android:support.v4.FragmentManager fou
我正在使用平板电脑的 Fragments 创建一个应用程序。到目前为止,我已经在左侧创建了一些按钮,并且在单击按钮时会出现 fragment 。 但我的 MainActivity.java 文件出现错
错误 错误类型不兼容:android.app.FragmentManager 无法转换为 android.support.v4.app.FragmentManager 让我抓狂。 在我的应用程序中,我
我收到以下错误 Type mismatch: cannot convert from android.app.FragmentManager to android.support.v4.app.Fra
编辑:这似乎只发生在我之前的 Activity 是横向的,并且 setRequestedOrientation() 是纵向的,这可能是什么问题? 我在一个 Activity 中有一个代码,它启动一个对
获取不兼容类型的 FragmentManager 的持续错误。需要支持库才能工作,但无法弄清楚。 Android Studio 说它需要支持导入,该支持导入就在那里,但找到了 androidx 导入。
更新: 我认为泄漏来自 getActivity().getSupportLoaderManager().restartLoader(getLoaderId(), null, this);我的对象实现
我尝试创建一个 Android 应用程序。在 Android Studio 中使用选项卡。我遇到了以下问题:我的所有 fragment 导入都导致了错误 Cannot Resolve Symbol '
使用我的 Fragment 类中的这段代码: FragmentManager fm = getFragmentManager(); 我得到了空值。为什么?我在android doc中找到了那句话: N
有没有办法从应用程序上下文中获取 FragmentManager?我想使用 ImageLoader 或 BitmapFun 来存储我从服务器下载的一些位图。这两个类都需要 FragmentManage
我对 FragmentManager 后台堆栈背后的基本原理有点困惑。 鉴于一个 Activity 有两个用于容纳不同 fragment 的容器:问题是当使用 fragment 事务将 fragmen
所以我在将 ViewPager 与 FragmentStatePagerAdapter 一起使用时遇到了这个问题然后我试图选择当前页面(即向用户显示第二页而不是第一页)我不时得到这个异常. 问题似乎是
在我的应用程序中有一个FrameLayout,我在上面添加了各种 fragment FragmentManager fm = getSupportFragmentManager(); Fragment
我是一名优秀的程序员,十分优秀!