在Android中的TabLayout片段之间进行通信

问题描述 投票:0回答:1

我使用带有片段的选项卡布局。场景是这样的。

活动:

片段1,片段2,片段3

从Fragment2更新Fragment1的UI。

我试图从片段访问方法,但导致空指针错误。

android android-fragments android-tablayout
1个回答
0
投票
  1. 您可以使用Observer Pattern实现此目的。为此,您必须在MutableLiveData中创建一个MainActivity,并将其通过fragment传递给interface
  2. 然后从FragmentA发布值,并从FragmentB观察值,并在更改时进行操作

创建界面:

interface UpdateFragmentListener {
    fun onUpdate(): MutableLiveData<Any>
}

Activity中实现:

class MainActivity: AppCompatActivity, UpdateFragmentListener {
   val fragmentUpdate: MutableLiveData<Any> = MutableLiveData()

   ...

   override fun onUpdate(): MutableLiveData<Any> = fragmentUpdate
}

在FragmentA内部:

...

val updateListener: UpdateFragmentListener 

override fun onAttach(context: Context) {
    updateListener = context as UpdateFragmentListener 
}

override fun onViewCreated(v: View, savedInstanceState: Bundle) { 
    super.onViewCreated(v, savedInstanceState

    //use like this by modifying it wherever you need inside FragmentA
    updateListener.postValue(Any())

}

在FragmentB内部:

...

val updateListener: UpdateFragmentListener 

override fun onAttach(context: Context) {
    updateListener = context as UpdateFragmentListener 
}

override fun onViewCreated(v: View, savedInstanceState: Bundle) { 
    super.onViewCreated(v, savedInstanceState

    //Observe it and do operation wherever you need inside FragmentB
    updateListener.observe(this, Observer { 
        // implement your logic here
    })

}
© www.soinside.com 2019 - 2024. All rights reserved.