简体   繁体   English

在Fragment中调用notifyDataSetChanged()

[英]Call notifyDataSetChanged() within Fragment

I'm using ViewPager in MainActivity.java with five Fragments. 我在MainActivity.java使用ViewPager,有五个片段。

Now I've got a problem. 现在我有一个问题。

Running notifyDataSetChanged() works fine like this: 运行notifyDataSetChanged()可以像这样正常工作:

viewpager.getAdapter().notifyDataSetChanged();

But how can I run notifyDataSetChanged() from a Fragment? 但是,如何从一个片段运行notifyDataSetChanged()

I have no idea. 我不知道。

What I've tried 我尝试过的

Making ViewPager static and then run 使ViewPager静态,然后运行

 MainActivity.this.viewpager.getAdapter().notifyDataSetChanged() 

doesn't work. 不起作用。

Add a method to your MainActivity like 将方法添加到您的MainActivity

public void dataChanged() {
  viewpager.getAdapter().notifyDataSetChanged();
}

and from your fragments call it with 从您的片段中调用

((MainActivity) getActivity()).dataChanged();

You can do this by various methods: 您可以通过多种方法执行此操作:

  1. The easiest one - declare a public method in MainActivity.java as following: 最简单的方法-在MainActivity.java中声明一个公共方法,如下所示:

    public void onDataSetChanged(){ if(viewPager != null) { viewPager.getAdapter().notifyDataSetChanged() } }

And then call it from the fragment like this: 然后从这样的片段中调用它:

((MainActivity) getActivity()). onDataSetChanged();
  1. Using Interface: You can create your own interface as : 使用界面:您可以创建自己的界面,如下所示:

public interface OnDataSetChangeListener { void onDataSetChanged(); }

Declare and define an instance of it in MainActivity.java and then set it to the instance of your fragment. 在MainActivity.java中声明并定义其实例,然后将其设置为片段的实例。 Then call it from fragment as: 然后从片段中调用它为:

onDataSetChangeListener.onDataSetChanged();
  1. Using EventBuses. 使用EventBuses。

And many more. 还有很多。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM