大佬教程收集整理的这篇文章主要介绍了如何将 Flutter Fragment 添加到 Kotlin 应用程序,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我是 Kotlin 的 AndroID 开发新手,我正在开发一个使用 Flutter 模块的 Kotlin 应用程序,该应用程序有两个按钮,一个调用 Flutter 模块的一个路由并将其显示为单个屏幕,另一个必须在同一屏幕中将不同的路线显示为片段。
我已按照 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,请注明来意。