程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何将 Flutter Fragment 添加到 Kotlin 应用程序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何将 Flutter Fragment 添加到 Kotlin 应用程序?

开发过程中遇到如何将 Flutter Fragment 添加到 Kotlin 应用程序的问题如何解决?下面主要结合日常开发的经验,给出你关于如何将 Flutter Fragment 添加到 Kotlin 应用程序的解决方法建议,希望对你解决如何将 Flutter Fragment 添加到 Kotlin 应用程序有所启发或帮助;

我是 Kotlin 的 AndroID 开发新手,我正在开发一个使用 Flutter 模块的 Kotlin 应用程序,该应用程序有两个按钮,一个调用 Flutter 模块的一个路由并将其显示为单个屏幕,另一个必须在同一屏幕中将不同的路线显示为片段。

如何将 Flutter Fragment 添加到 Kotlin 应用程序

我已按照 Flutter 官方网站 https://flutter.dev/docs/development/add-to-app/android/project-setup 的说明进行操作,到目前为止,我已经成功实现了第一个按钮的功能。

class HelloWorldActivity : AppCompatActivity() {

    overrIDe fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceStatE)
        setContentVIEw(R.layout.activity_Hello_world);   


        //FullScreen button
        btn_Full_Screen.setonClickListener {
            startActivity(
                FlutterActivity
                    .withNew@R_944_10846@ne()
                    .initialRoute("home")
                    .build(this)
            )
        }     

    }
}

我在与按钮相同的活动布局中为片段视图创建了一个框架布局。

  <fragment
    androID:ID="@+ID/fragment_container"
    androID:layout_wIDth="201dp"
    androID:layout_height="206dp"
    androID:layout_marginBottom="304dp"
    app:layout_consTraintBottom_toBottomOf="parent"
    app:layout_consTraintEnd_toEndOf="parent"
    app:layout_consTraintStart_toStartOf="parent"
     />

然后,我按照官方文档,https://flutter.dev/docs/development/add-to-app/android/add-flutter-fragment?tab=cached-@R_944_10846@ne-with-initial-route-kotlin-tab,并实现了像这样管理颤振片段的代码。

class HelloWorldActivity : AppCompatActivity() {

companion object {
    // define a tag String to represent the FlutterFragment within this
    // Activity's FragmentManager. This value can be whatever you'd like.
    private const val TAG_FlutteR_FRAGMENT = "Flutter_fragment"
}

private var FlutterFragment: FlutterFragment? = null


overrIDe fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceStatE)
    setContentVIEw(R.layout.activity_Hello_world);

    //Fragment managment code
    val fragmentManager: FragmentManager = supportFragmentManager

    FlutterFragment = fragmentManager
        .findFragmentByTag(tag_FlutteR_FRAGMENT) as FlutterFragment?

    if (FlutterFragment == null) {
        var newFlutterFragment = FlutterFragment.createDefault()
        FlutterFragment = newFlutterFragment
        fragmentManager
            .begintransaction()
            .add(
                R.ID.fragment_container,newFlutterFragment,TAG_FlutteR_FRAGMENT
            )
            .commit()
    }

    //Full Screen button
    btn_Full_Screen.setonClickListener {
        startActivity(
            FlutterActivity
                .withNew@R_944_10846@ne()
                .initialRoute("home")
                .build(this)
        )
    }

}

}

当我运行这个应用程序崩溃并显示此错误:

E/AndroIDRuntime:致命异常:main 进程:com.loftydevelopment.Helloworldkotlin,PID:7653 java.lang.RuntimeException: 无法启动活动 ComponenTinfo{Com.loftydevelopment.Helloworldkotlin/com.loftydevelopment.Helloworldkotlin.HelloWorldActivity}: androID.vIEw.InflateException: com.loftydevelopment.Helloworldkotlin:layout/activity_Hello_world 中的二进制 XML 文件第 46 行: com.loftydevelopment.Helloworldkotlin:layout/activity_Hello_world 中的二进制 XML 文件第 46 行:错误膨胀类片段 在 androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:3270) 在 androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 在 androID.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 在 androID.app.servertransaction.transactionExecutor.executeCallBACks(transactionExecutor.java:135) 在 androID.app.servertransaction.transactionExecutor.execute(transactionExecutor.java:95) 在 androID.app.ActivityThread$H.handlemessage(ActivityThread.java:2016) 在 androID.os.Handler.dispatchmessage(Handler.java:107) 在 androID.os.Looper.loop(Looper.java:214) 在 androID.app.ActivityThread.main(ActivityThread.java:7356) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.androID.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 在 com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:930) 引起:androID.vIEw.InflateException:com.loftydevelopment.Helloworldkotlin 中的二进制 XML 文件第 46 行:layout/activity_Hello_world:com.loftydevelopment.Helloworldkotlin:layout/activity_Hello_world 中的二进制 XML 文件第 46 行:错误膨胀类片段 引起:androID.vIEw.InflateException:com.loftydevelopment.Helloworldkotlin:layout/activity_Hello_world 中的二进制 XML 文件第 46 行:错误膨胀类片段 引起:java.lang.NullPointerException 在 java.lang.VMClassLoader.findLoadedClass(Native Method) 在 java.lang.classLoader.findLoadedClass(ClassLoader.java:738) 在 java.lang.classLoader.loadClass(ClassLoader.java:363) 在 java.lang.classLoader.loadClass(ClassLoader.java:312) 在 androID.app.Fragment.instantiate(Fragment.java:536) 在 androID.app.FragmentContainer.instantiate(FragmentContainer.java:53) 在 androID.app.FragmentManagerImpl.onCreateVIEw(FragmentManager.java:3553) 在 androID.app.FragmentController.onCreateVIEw(FragmentController.java:104) 在 androID.app.Activity.onCreateVIEw(Activity.java:6948) 在 androIDx.fragment.app.FragmentActivity.onCreateVIEw(FragmentActivity.java:338) 在 androID.vIEw.LayoutInflater.tryCreateVIEw(LayoutInflater.java:1069) 在 androID.vIEw.LayoutInflater.createVIEwFromTag(LayoutInflater.java:997) 在 androID.vIEw.LayoutInflater.createVIEwFromTag(LayoutInflater.java:961) 在 androID.vIEw.LayoutInflater.rInflate(LayoutInflater.java:1123) 在 androID.vIEw.LayoutInflater.rInflateChildren(LayoutInflater.java:1084) 在 androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:682) 在 androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:534) 在 androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:481) 在 androIDx.appcompat.app.AppCompatDelegateImpl.setContentVIEw(AppCompatDelegateImpl.java:469) 在 androIDx.appcompat.app.AppCompatActivity.setContentVIEw(AppCompatActivity.java:140) 在 com.loftydevelopment.Helloworldkotlin.HelloWorldActivity.onCreate(HelloWorldActivity.kt:28) 在 androID.app.Activity.performCreate(Activity.java:7802) 在 androID.app.Activity.performCreate(Activity.java:7791) 在 androID.app.instrumentation.callActivityOnCreate(instrumentation.java:1299) 在 androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:3245) 在 androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 在 androID.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 在 androID.app.servertransaction.transactionExecutor.executeCallBACks(transactionExecutor.java:135) 在 androID.app.servertransaction.transactionExecutor.execute(transactionExecutor.java:95) 在 androID.app.ActivityThread$H.handlemessage(ActivityThread.java:2016) 在 androID.os.Handler.dispatchmessage(Handler.java:107) 在 androID.os.Looper.loop(Looper.java:214) 在 androID.app.ActivityThread.main(ActivityThread.java:7356) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.androID.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 在 com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:930)

我知道我没有实现第二个按钮的功能,但我想知道应用的片段插入是否如文档所示那样工作。

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的如何将 Flutter Fragment 添加到 Kotlin 应用程序全部内容,希望文章能够帮你解决如何将 Flutter Fragment 添加到 Kotlin 应用程序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。