在React Native应用程序中加载片段

时间:2018-02-01 15:13:03

标签: android android-fragments react-native

我正在开发我的Android库和ReactNative之间的桥梁,以便能够在混合应用程序上使用我的库。

我首先使用react-native init创建了一个基本应用,其中包含默认的Android和iOS文件夹

然后我使用gradle导入了我的库,并创建了扩展ReactContextBaseJavaModuleReactPackage的文件,以确保App.js可以查看并调用我的库中的方法,但现在我有一个问题。

我从React Native调用我的Android库的其中一种方法返回了我需要显示的Fragment,我不知道该怎么做。

到目前为止,我能够在MainActivity.java文件夹下的React Native项目中的android中编写java代码,以便以这种方式处理它

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   fragment = MyLibrary.getFragmentMethod();
   getFragmentManager().beginTransaction().add(fragment, TAG).commit();
}

我想做的更像是:

getFragmentManager().beginTransaction().replace(R.id.frame_layout_id, fragment, TAG).commit();

但我不知道如何定义我的React Native应用程序将使用哪个布局

P.S。我尝试在setContentView(R.layout.main)方法中添加行onCreate,但这样做是为了让App.js不再可见(可能是因为覆盖了ReactNative“布局”

1 个答案:

答案 0 :(得分:2)

您可以将自己的容器添加到现有布局中。例如:

window.decorView.findViewById<ViewGroup>(android.R.id.content)
            .addView(
                    FrameLayout(this).apply {
                        id = R.id.fragment_container
                        layoutParams = FrameLayout.LayoutParams(
                                FrameLayout.LayoutParams.MATCH_PARENT,
                                FrameLayout.LayoutParams.MATCH_PARENT
                        )
                    }
            )

现在您可以将片段添加到此容器中。 此库也可能有用 - https://github.com/hudl/react-native-android-fragment