栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android基础入门 - Activity、Fragment传递参数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android基础入门 - Activity、Fragment传递参数

之前Java的一直顺手就写了,在写Kt时有点小不同,为了省得忘记,顺便做个笔记

在我的认知中,关于Activity → Fragment、Fragment → Fragment 传值方式一般有以下几种

  • 传统setArguments方式,主要是通过Bundle传递
  • 接口回调
  • 类似EventBus三方框架
  • 除传统方式外,主要是采用的是观察者模式

      • Java 版本
      • Kotlin 版本
        • 传统方式
        • instantiate 方式

Java 版本
  • 传递方
 TestFragment testFragment= new TestFragment();
 Bundle args = new Bundle();
 args.putInt("id", 666);
 testFragment.setArguments(args);
  • 接收方
 Bundle bundle = getArguments();
 id = bundle.getInt("id");

伪代码示例

	 if (null == testFragment) {
         testFragment= new TestFragment();
     }
        Bundle bundle = new Bundle();
        bundle.putString("name", "拍照");
        testFragment.setArguments(bundle);
        //方法一传参数
        Fragment instantiate = TestFragment.instantiate(this, TestFragment.class.getName(), bundle);
        //方法二传参数
        getSupportFragmentManager().beginTransaction().replace(R.id.ll_replace, instantiate).addToBackStack(this.getClass().getSimpleName()).commit();
//        getSupportFragmentManager().beginTransaction().replace(R.id.ll_replace, takePhotoFragment).addToBackStack(this.getClass().getSimpleName()).commit();

Kotlin 版本

gogogo ~

Activity传参到Fragment

传统方式
  • 发送方
  val fragment = MvPagerFragment()
  val bundle = Bundle()
  bundle.putString("args", "靓仔")
  fragment.arguments = bundle
  • 接收方
  var any = arguments?.get("args")
instantiate 方式

instantiate 方式可能已过时,但目前尚可使用

  • 发送方
  val bundle = Bundle()
  bundle.putString("type", "1")
  var personalCollectionFragment =
            Fragment.instantiate(this, PersonalCollectionFragment::class.java.name, bundle)
 	
   //以下是我在项目中用到的一段伪代码,可以借鉴
   binding.vp.adapter = object : FragmentStateAdapter(this) {
            override fun createFragment(position: Int) = when (position) {
                0 -> PersonalDynamicFragment()
                1 -> personalCollectionFragment
                else -> PersonalLikeFragment()
            }

            override fun getItemCount() = titleList.size
  }
  • 接收方
  var any = arguments?.get("type")
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031606.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号