Android Fragment 未显示在 React Native App 中

Posted

技术标签:

【中文标题】Android Fragment 未显示在 React Native App 中【英文标题】:Android Fragment not displayed in React Native App 【发布时间】:2021-12-14 16:54:33 【问题描述】:

我已按照 RN 文档创建了一个 android 原生片段: https://reactnative.dev/docs/native-components-android#1-create-a-fragment

片段已加载,我可以在布局检查器中看到它,但是正如您在屏幕截图中看到的那样,它位于视图的最底部,我假设这就是我看不到的原因我在 Fragment 内部的 TextView。

那么,需要做什么才能将 CustomView 带到最前面呢?

我试过拨打:myFragment.customView.bringToFront();,但没有成功。

commit() 总是返回 -1:

activity.getSupportFragmentManager()
      .beginTransaction()
      .add(reactNativeViewId, myFragment, String.valueOf(reactNativeViewId))
      .commit();

我已经按照文章,来回查看说明,一切都在那里。

我创建了一个 repo 来帮助调试问题: https://github.com/wilsolutions/react-native-experiments

有什么想法吗?

谢谢

【问题讨论】:

【参考方案1】:

我编写了那部分文档。我在此 PR 中添加了缺失的部分(并修复了导致布局不可预测的问题):

https://github.com/facebook/react-native-website/pull/2599。如果您仍然遗漏了什么,请告诉我。

答案基本结束:

CustomView 必须像上面 PR 一样扩展 FrameLayout 在 ViewManager 的 setupLayout 方法中
ViewGroup parentView = (ViewGroup) root.findViewById(reactNativeViewId).getParent();

应该是

ViewGroup parentView = (ViewGroup) root.findViewById(reactNativeViewId);

【讨论】:

太好了!谢谢!!!

以上是关于Android Fragment 未显示在 React Native App 中的主要内容,如果未能解决你的问题,请参考以下文章

回收站视图未在 Fragment (Android) 上显示项目

Fragment 未附加到 FragmentManager

显示 DialogFragment 时调用 Fragment 未暂停

对于 Fragment 类型,方法 getSupportFragmentManager() 未定义

Android Fragment,视图未删除

标记未在 Android 中的地图上显示