【问题标题】:Android Studio with Kotlin How Does Control Pass From MainActivity to Another ClassAndroid Studio 与 Kotlin 如何控制从 MainActivity 传递到另一个类
【发布时间】:2020-12-15 01:51:12
【问题描述】:

我正在使用 android studio 4.1.1 和 kotlin。

我正在尝试学习使用 Android Studio 和 Kotlin 编写 Android 应用程序。我有一个问题,几个教程和搜索线程没有为我回答。控制如何从MainActivity.kt 类传递到另一个类,即:FirstFragment.kt

我在教程中学习的其他内容做得很好,但我无法弄清楚。

例子:

我在 Android Studio 中使用 Kotlin 创建了一个新的 Basic Activity 应用。在 java 目录中,我看到了这些类:FirstFragment.kt、MainActivity.kt 和 SecondFragment.kt。

在 res/layout/ 目录中,我看到:activity_main.xmlcontent_main.xmlfragment_first.xmlfragment_second.xml

问题 1) 当应用程序在模拟器中加载时,我看到了来自 fragment_first.xml 的按钮和 textView。这是怎么发生的?我在代码中看不到“加载 fragment_first.xml”。

MainActivity.kt 具有加载该布局的 setContentView(R.layout.activity_main)。 activity_main.xml 有<include layout="@layout/content_main" />。但是从那里,我不知道在哪里可以找到加载fragment_first.xml 布局的代码。

我相信当fragment_first.xml 加载时,控制权会从MainActivity.kt 传递到FirstFragment.kt,是吗?问题2)。这是因为 onCreate 函数吗?

感谢您帮助我更好地理解这一点。

【问题讨论】:

    标签: android-studio kotlin


    【解决方案1】:

    有多种方法可以加载片段。传统上,您使用 FragmentManager 创建一个 Fragment 事务,告诉 Activity 将 Fragment 放入视图层次结构并开始管理其生命周期。

    最近,他们添加了 Navigation 组件,可以代替直接使用 FragmentManager 使用。

    在当前新建项目BasicActivity中,布局activity_main.xml包含布局content_main。在content_main.xml 中,您会看到它包含一个设置为片段(使用name 参数)NavHostFragmentfragment 元素,这是一个特殊片段,导航组件使用它来承载子片段,在导航 XML 文件中指定。这个fragment 元素还使用navGraph 属性指定导航xml 文件。它指定了nav_graph.xml,您可以在res/navigation 目录中找到它。

    如果您打开nav_graph.xml,您会看到它已将FirstFragment 设置为主片段,所以这就是您看到的第一个片段。

    控制流程基本上是:

    1. Activity 的onCreate() 将内容视图设置为activity_main,其中包括content_main
    2. content_main 包含一个 NavHostFragment,它会自动插入到视图层次结构中,以便 Activity 开始运行它。
    3. NavHostFragment 在 XML 中设置为使用 nav_graph,这告诉它首先加载 FirstFragment。

    【讨论】:

    • #Tenfour04 灯泡亮了!非常感谢你解释。完全有道理,也解决了其他几个问题。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2018-10-15
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多