【问题标题】:Pass ArrayList<Object> between Fragments in NavigationComponents在导航组件中的片段之间传递 ArrayList<Object>
【发布时间】:2020-09-08 09:00:13
【问题描述】:

我正在编写我的 UI 应用程序以使用 Navigation 架构组件,因此我需要传递一个实现 Parcelable 的 ArrayList 对象,但我找不到任何有关它的信息。

如果您能提供帮助,我将不胜感激。

【问题讨论】:

    标签: android android-fragments navigation


    【解决方案1】:

    您暂时不能通过安全参数共享数据,因为库不支持它。但是,您可以使用这样的传统方法:

    如果您想将 ArrayList 数据从FragmentA 发送到FragmentB

    FragmentA:

    val myParcelizedObjectArrayList = ArrayList<MyParcelisedObject>()
    val bundle = bundleOf("SOME_BUNDLE_KEY" to myParcelizedObjectArrayList)
    
    findNavController().navigate(R.id.action_fragmentA_to_fragmentB, bundle)
    

    FragmentB的onCreate()中可以这样获取列表:

    val myArrayList = arguments?.getParcelableArrayList<MyParcelisedObject>("SOME_BUNDLE_KEY")
    

    【讨论】:

      【解决方案2】:

      在你的片段类中添加这个。像这样放置 Parcelable 列表

      companion object {
      fun getInstance(objList : List<Parcelable>): CustomFragment {
          val args = Bundle()
          args.putParcelableArrayList("list", objList);
          val fragment = CustomFragment()
          fragment.arguments = args
          return fragment
      }
      }
      

      阅读这样的参数

      override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      
      val args = arguments
      var myList : List<Parcelable> = args.getParcelableArrayList<Parcelable>("list")
      }
      

      【讨论】:

      • 这不是导航组件。你只是传递给简单的片段。我需要导航组件的方式。
      猜你喜欢
      • 1970-01-01
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      相关资源
      最近更新 更多