Android系列之Navigation的目的地(Destination)

目的地主要有三种类型

  1. Activity
  2. Fragment
  3. 占位符目的地

Activity

从现有的activity进行创建

点击 New Destination img,然后在显示的下拉列表中,点击相应目的地。

新建activity来创建

  1. 完全限定的类名称

    <?xml version="1.0" encoding="utf-8"?>
    <navigation xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/navigation_graph"
        app:startDestination="@id/simpleFragment">
    
        <activity
            android:id="@+id/sampleActivityDestination"
            android:name="com.example.android.navigation.activity.DestinationActivity"
            android:label="@string/sampleActivityTitle" />
    </navigation>
    

    类似于

    startActivity(new Intent(context, DestinationActivity.class));
    
  2. Intent-Filter

    1. 本应用的Activity

      清单文件

      <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.android.navigation.activity">
          <application>
              <activity android:name=".DestinationActivity">
                  <intent-filter>
                      <action android:name="android.intent.action.VIEW" />
                      <data
                          android:host="example.com"
                          android:scheme="https" />
                      <category android:name="android.intent.category.BROWSABLE" />
                      <category android:name="android.intent.category.DEFAULT" />
                  </intent-filter>
              </activity>
          </application>
      </manifest>
      

      navigation graph

      <?xml version="1.0" encoding="utf-8"?>
      <navigation xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:app="http://schemas.android.com/apk/res-auto"
          android:id="@+id/navigation_graph"
          app:startDestination="@id/simpleFragment">
          <activity
              android:id="@+id/localDestinationActivity"
              android:label="@string/localActivityTitle"
              app:action="android.intent.action.VIEW"
              app:data="https://example.com"
              app:targetPackage="${applicationId}" />
      </navigation>
      
    2. 其他应用的Activity

      <?xml version="1.0" encoding="utf-8"?>`
      <navigation xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:app="http://schemas.android.com/apk/res-auto"
          android:id="@+id/navigation_graph"
          app:startDestination="@id/simpleFragment">
          <activity
              android:id="@+id/localDestinationActivity"
              android:label="@string/localActivityTitle"
              app:action="android.intent.action.VIEW"
              app:data="https://example.com"
              app:targetPackage="com.example.android.another.app" />
      </navigation>
      

Fragment

从现有的fragment进行创建

点击 New Destination img,然后在显示的下拉列表中,点击相应目的地。

新建fragment来创建

  1. 在 Navigation Editor 中,点击 New Destination 图标 img,然后点击 Create new destination
  2. 在随即显示的 New Android Component 对话框中,创建您的 Fragment。

从DialogFragment创建目的地

  1. 如果DialogFragment未创建,创建DialogFragment

  2. 在Navigation Graph中添加dialog标签

    <?xml version="1.0" encoding="utf-8"?>
    <navigation xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:id="@+id/nav_graph">
    
    ...
    
    <dialog
        android:id="@+id/my_dialog_fragment"
        android:name="androidx.navigation.myapp.MyDialogFragment">
        <argument android:name="myarg" android:defaultValue="@null" />
            <action
                android:id="@+id/myaction"
                app:destination="@+id/another_destination"/>
    </dialog>
    
    ...
    
    </navigation>
    

占位符目的地

您可以使用占位符来表示尚未实现的目的地。 占位符充当目的地的视觉表示形式。在 Navigation Editor 中,您可以像使用任何其他目的地一样使用占位符。

以下是关于Android Studio中Navigation的介绍和演示: NavigationAndroid Jetpack中的一个组件,它可以帮助我们管理应用程序中的导航,包括屏幕之间的转换和应用程序中的任务。Navigation组件包括三个主要部分:导航图,目的地和操作。 导航图是一个XML文件,它定义了应用程序中的所有目的地和操作之间的关系。目的地是应用程序中的一个屏幕,例如一个Fragment或Activity。操作是用户在应用程序中执行的动作,例如点击按钮或导航到另一个屏幕。 以下是一个简单的示例,演示如何在Android Studio中使用Navigation组件: 1. 首先,在build.gradle文件中添加以下依赖项: ```gradle dependencies { def nav_version = "2.3.5" implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" } ``` 2. 创建一个新的导航图文件。在res文件夹中,右键单击文件夹并选择New > Android Resource File。在弹出的对话框中,选择Navigation作为资源类型,并为文件命名。 3. 在导航图中添加目的地。在导航图编辑器中,单击“添加目的地”按钮并选择Fragment或Activity。为目的地命名并设置其ID。 4. 在导航图中添加操作。在导航图编辑器中,单击“添加操作”按钮并选择要执行的操作类型。选择源目的地和目标目的地,并设置操作的ID。 5. 在代码中使用Navigation组件。在Activity或Fragment中,获取NavController实例并使用它来执行操作。例如,以下代码演示如何在点击按钮时导航到另一个屏幕: ```kotlin button.setOnClickListener { findNavController().navigate(R.id.action_source_to_destination) } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星之烁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值