android的布局文件fragment标签

android的布局文件fragment标签。这个fragment在navigation标签内包裹,在哪能查看该标签允许的属性,和相关属性的解释

这个是我用的文档,翻了一会儿,也不知道在哪
https://developer.android.google.cn/docs?hl=zh-cn

  • 请看👉 :Android Navigation获取栈顶Fragment
  • 除此之外, 这篇博客: Fragment Navigation 使用总结中的 使用步骤 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
      1. 创建Fragments
      1. 在res 下创建navigation文件夹,然后在里面创建 Navigation Resource File,创建完成后文件里面会生成 标签
      1. 在 标签中使用 标签 注册创建的Fragments, demo 如下:
    <navigation xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:app="http://schemas.android.com/apk/res-auto"
       xmlns:tools="http://schemas.android.com/tools"
       app:startDestination="@id/fragment_first">
      <fragment
           android:id="@+id/fragment_first"
           android:name="com.google.samples.apps.sunflower.test.FirstFragment"
           tools:layout="@layout/fragment_first">
           <action
               android:id="@+id/action_first_to_second"
               app:destination="@id/fragment_second"
               app:enterAnim="@anim/fragment_fade_enter"
               app:exitAnim="@anim/fragment_fade_exit"
               app:launchSingleTop="true"
               app:popEnterAnim="@anim/fragment_close_enter"
               app:popExitAnim="@anim/fragment_close_exit"/>
           <argument
               android:name="name"
               android:defaultValue="admin"
               app:argType="com.google.samples.apps.sunflower.test.FirstViewModel"
               app:nullable="false" />
           <deepLink app:uri="test://first" />
       </fragment>
       ....
       </navigation>
    
    • 属性解释:

      1. navigation 标签中 app:startDestination : 指定起始的fragment,value 是下面使用fragment标签中的id
      2. fragment 标签中android:id : 声明fragment的ID,一般用在设置跳转到该fragment的fragment的app:destination 属性
      3. fragment 标签中android:name : 指定 fragment 类的全路径,并且会在项目build之后生成 以fragment 类开头的XXXDirections类,如:FirstFragmentDirections
      4. fragment 标签中tools:layout : 指定预览的fragment的xml布局
      5. 标签: 声明fragment的执行跳转的目标fragment和 enter,exit的动画
        1. id : 声明 action的Id,在 自动生成的XXXDirections中会以该actionXX创建获取 NavDirections 对象的static方法 ,如: fun actionFirstToSecond(): NavDirections = ActionOnlyNavDirections(R.id.action_first_to_second)
        2. app:destination : 指定 跳转到的fragment的id
        3. app:enterAnim 和 app:exitAnim 指定 fragment 进入和退出的动画
        4. app:launchSingleTop : 类似于 activity的 launchModel=“singleTop”
        5. app:popEnterAnim : 按返回键或者弹出下个页面使当前页面显示的进入动画
        6. app:popExitAnim : 按返回键或者弹出当前页面的退出动画
      6. argument 标签: 指定fragment需要传入的参数
        1. name : 参数的名称
        2. argType: 参数的类型,若是基本类型的参数,可以直接写 类的名称,然后首字母小写,如:integer,string;若是自定义的class.这里要写类的全路径
        3. defaultValue : 默认值,如果argType是基本类,可以直接写值,如:1,aaa;若 argType 是自定义的class ,则需要在自定义的class中创建自己的static的对象变量,然后该属性的值就是static对象的变量名.
        4. app:nullable : 是否可空.
      7. deepLink : 指定 scheme协议的link跳转链接
        1. app:uri : scheme 协议的字符串,使用 deepLink 跳转如下:Navigation.findNavController(view).navigate(Uri.parse("test://first"))
      1. 在 activity 中使用 androidx.fragment.app.FragmentContainerView 标签创建fragment container,代码如下:
     <androidx.fragment.app.FragmentContainerView
               android:id="@+id/nav_host"
               android:name="androidx.navigation.fragment.NavHostFragment"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               app:defaultNavHost="true"
               app:navGraph="@navigation/nav_test" />
    
    • 属性解释:

      1. android:name : 指定 导航容器,默认使用 androidx.navigation.fragment.NavHostFragment,NavHostFragment持有一个FrameLayout,接下来Navigation Graph中的所有Fragment之间的切换都是在该容器内完成的
      2. app:defaultNavHost : 当该值为true是 fragment会监听返回键,点击返回键是默认变成了fragment的回退;为false时则是由 activity 监听返回键
      3. app:navGraph : 指定 加载 fragment的注册的 navigation.xml文件
    • 跳转 Fragment:

      //使用build 项目时生成的 XXXDirections对象指定跳转
       Navigation.findNavController(view).navigate(ThirdFragmentDirections.actionThirdToFourth().actionId)
       // 使用 deepLink 跳转
      Navigation.findNavController(view).navigate(Uri.parse("test://first"))         
      
    • 返回 fragment:

      // 指定跳转到的fragment,若第二个参数(inclusive)为true时,也会关闭指定的fragment,返回到指定的fragment前一个fragment;为false时,则返回到指定fragment,该方法会把在指定fragment之后的fragment都给pop出栈.
      Navigation.findNavController(view).popBackStack(R.id.fragment_first, false)
      //关闭当前的fragment
      Navigation.findNavController(view).popBackStack()
      
  • 以下回答由chatgpt基于相关博客总结生成:

    经过查阅官方文档和资料,我认为目前并没有一个明确的地方可以查看android的布局文件fragment标签在navigation标签内包裹时所允许的属性。不过,在官方文档中有详细的解释与示例,我们可以通过官方文档来了解和学习如何使用navigation框架。在使用的时候,需要注意以下几点:

    1. 创建Navigation Resource File,然后在其中声明Fragment。在Fragment标签中,可以设置以下属性:

    2. android:id:用于指定该Fragment的ID

    3. android:name:用于指定该Fragment的全类名
    4. app:defaultNavHost:用于指定该Fragment是否为默认的导航目标
    5. app:navGraph:用于指定该Fragment所在的Navigation Graph ID
    6. tools:layout:用于指定该Fragment所使用的布局文件

    7. 在Navigation Graph标签中,使用Fragment标签,声明每个Fragment的信息。在Fragment标签中,可以设置以下属性:

    8. android:id:用于指定该Fragment的ID

    9. android:name:用于指定该Fragment的全类名
    10. app:destination:用于指定该Fragment的目的地(即跳转的目标Fragment)
    11. app:enterAnim:用于指定该Fragment跳转时的进入动画
    12. app:exitAnim:用于指定该Fragment跳转时的退出动画
    13. app:popEnterAnim:用于指定返回时的进入动画
    14. app:popExitAnim:用于指定返回时的退出动画

    15. 在使用Navigation框架时,可以使用以下方法:

    16. Navigation.findNavController(view):用于获取当前视图所在的NavController

    17. navigate(...):用于跳转到指定的目的地
    18. popBackStack(...):用于返回到指定的目的地或者关闭当前Fragment

    需要注意的是,使用Navigation框架时,需要在Activity中添加一个FragmentContainerView,并设置其属性,以指定该Activity所使用的Navigation Graph。同时,需要在代码中获取该视图所在的NavController并进行跳转或返回操作。