在Fragment

时间:2017-07-28 08:49:54

标签: java android android-fragments android-viewpager

我正在使用MainActivity.java中的ViewPager和五个片段。

现在我遇到了问题。

正常运行notifyDataSetChanged()可以正常工作:

viewpager.getAdapter().notifyDataSetChanged();

但是如何从片段中运行notifyDataSetChanged()

我不知道。

我尝试了什么

使ViewPager静态然后运行

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

不起作用。

2 个答案:

答案 0 :(得分:0)

向您的MainActivity添加方法

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

并从您的片段中调用

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

答案 1 :(得分:0)

您可以通过各种方法执行此操作:

  1. 最简单的方法 - 在MainActivity.java中声明一个公共方法如下:

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

  2. 然后从像这样的片段中调用它:

    ((MainActivity) getActivity()). onDataSetChanged();
    
    1. 使用界面:您可以创建自己的界面:
    2. public interface OnDataSetChangeListener { void onDataSetChanged(); }

      在MainActivity.java中声明并定义它的实例,然后将其设置为片段的实例。然后从片段中调用它:

      onDataSetChangeListener.onDataSetChanged();
      
      1. 使用EventBuses。
      2. 还有更多。