将导航组件添加到项目中

1. 将导航组件添加到项目中

我们已经在项目build.gradle 文件中为您添加了 ext 变量,该文件显示了我们将使用的导航组件的版本。我们已经针对所示版本进行了测试,但您可以在developer.android.com 上的此页面上查看哪个版本是最新的(在新选项卡中打开)

buildscript {

ext {

... version_navigation = '1.0.0' ...

}

App build.gradle 文件中,添加导航片段 ktx 和导航 UI ktx 的依赖项。

dependencies { ...

implementation "android.arch.navigation:navigation-fragment-ktx:$version_navigation" 

implementation "android.arch.navigation:navigation-ui-ktx:$version_navigation" 

}

2. 将导航图添加到项目中

在“项目”窗口中,右键单击 res 目录并选择“新建”>“Android 资源文件”。将出现“新建资源”对话框。

选择导航作为资源类型,并为其指定导航的文件名。确保它没有限定符。在 res 下的新导航目录中选择 navigation.xml 文件,并确保选择了设计选项卡。

3. 将 Activity 布局中的标题片段替换为导航主机片段

转到 Activity_main 布局。将现有标题片段的类名称更改为 androidx.navigation.fragment.NavHostFragment。将 ID 更改为 myNavHostFragment。它需要知道要使用哪个导航图资源,因此添加 app:navGraph 属性并使其指向导航图资源 - @navigation/navigation。最后设置defaultNavHost = true,表示这个导航主机会拦截系统后退键。

<!-- The NavHostFragment within the activity_main layout -->

 <fragment android:id="@+id/myNavHostFragment" 

android:name="androidx.navigation.fragment.NavHostFragment" 

android:layout_width="match_parent" android:layout_height="match_parent" 

app:navGraph="@navigation/navigation" app:defaultNavHost="true" 

/>

4. 将标题和游戏片段添加到导航图

在导航编辑器中,单击添加按钮。片段和活动的列表将会下拉。首先添加fragment_title,因为它是起始目的地。 (您将看到它将自动设置为图表的开始目标。)接下来,添加fragment_game。

<!-- The complete game fragment within the navigation XML, 
complete with tools:layout. -->

<fragment android:id="@+id/gameFragment" 

android:name="com.example.android.navigation.GameFragment"

     android:label="GameFragment"

 tools:layout="@layout/fragment_game" />

5. 用动作连接标题和游戏片段

首先将鼠标悬停在 titleFragment 上。您将在片段视图的右侧看到一个圆形连接点。单击连接点并将其拖动到 gameFragment 以添加连接两个 Fragment 的 Action。

6.按下播放按钮时进行导航

返回到 TitleFragment Kotlin 代码中的 onCreateView。绑定类已公开,因此您只需使用新的匿名函数(也称为 lambda)调用 binding.playButton.setOnClickListener 即可。在我们的 lambda 中,使用 view.findNavcontroller 获取导航主机片段的导航控制器。然后,通过调用 navController 使用 titleFragment 到 gameFragment 操作进行导航(R.id.action_titleFragment_to_gameFragment)

<!-- The complete game fragment within the navigation XML, complete with tools:layout. --> <fragment android:id="@+id/gameFragment" 
android:name="com.example.android.navigation.GameFragment" 
android:label="GameFragment" 
tools:layout="@layout/fragment_game" />

您可能还想做一件事。 Navigation 可以为我们创建 onClick 监听器。我们可以用 Navigation.createNavigateOnClickListener 调用替换匿名函数。

//The complete onClickListener with Navigation using createNavigateOnClickListener 

binding.playButton.setOnClickListener( 

Navigation.createNavigateOnClickListener(R.id.action_titleFragment_to_

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值