在tablayout片段之间进行通信[重复]
Posted
技术标签:
【中文标题】在tablayout片段之间进行通信[重复]【英文标题】:Communicating between the tablayout Fragments [duplicate] 【发布时间】:2020-02-20 10:31:28 【问题描述】:我使用了带有片段的选项卡布局。场景是这样的。
活动:
片段1、片段2、片段3
从 Fragment2 更新 Fragment1 的 UI。
我试图从片段中访问方法,但导致 空指针异常。
【问题讨论】:
那么代码在哪里,我们可以检查空异常在哪里? @Piyush 在尝试不同方法时丢失了代码。一般来说,要实现这一点,最佳实践是什么 Check this 请提供您的代码结构,然后我会找到您的问题 【参考方案1】:-
您可以使用
Observer Pattern
来实现此目的。为此,您必须在您的MainActivity
中创建一个MutableLiveData
并将其传递给fragment
到interface
。
然后从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.onUpdate().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.onUpdate().observe(this, Observer
// implement your logic here
)
【讨论】:
以上是关于在tablayout片段之间进行通信[重复]的主要内容,如果未能解决你的问题,请参考以下文章
getPageTitle() 没有被片段内的 Tablayout 调用