android中Navigation组件的Fragment间传递参数

android中Navigation组件的Fragment间传递参数

说明

HomeFragment中点击某个按钮,传递参数到RichTextFragment

一、gradle配置

app中build.gradle的配置

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    //为传递参数添加的
    id 'androidx.navigation.safeargs.kotlin'
}

项目中的build.gradle的配置

 dependencies {
        classpath "com.android.tools.build:gradle:4.1.3"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        //为传递参数添加的
        def nav_version = "2.3.2"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }

二、navigation中nav_home.xml中的配置

HomeFragment的配置:

<fragment
        android:id="@+id/navigation_home"
        android:name="xxxx.HomeFragment"
        android:label="@string/title_home"
        tools:layout="@layout/fragment_home">
        <argument
            android:name="title"
            android:defaultValue="标题"
            app:argType="string" />
        <argument
            android:name="scientificPlantingItem"
            android:defaultValue="@null"
            app:argType="com.ly.nongji.bean.ScientificPlantingItem"
            app:nullable="true" />
</fragment>

RichTextFragment的配置:

<fragment
   android:id="@+id/richText"
   android:name="com.ly.nongji.main.RichTextFragment"
   android:label="@string/fragment_rich_text"
   tools:layout="@layout/fragment_rich_text" />

二、使用步骤

1.HomeFragment中点击按钮时传递参数

//其中ScientificPlantingItem是实现了Serializable接口的类
val item=adapter.getItem(position) as ScientificPlantingItem
//这里必须传两个参数,与nav_home.xml中的配置一致
val action = HomeFragmentArgs(item.title,item).toBundle()
getController().navigate(R.id.richText, action)

2.RichTextFragment中接收参数

val mHomeFragmentArgs=HomeFragmentArgs.fromBundle(requireArguments())
if(mHomeFragmentArgs!=null){
  //获取ScientificPlantingItem实体类
  mScientificPlantingItem=mHomeFragmentArgs!!.scientificPlantingItem
  //获取字符串
  title=mHomeFragmentArgs!!.title      
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值