如何刷新片段onTabReselected?

时间:2017-01-04 09:36:25

标签: android android-fragments

这是我的代码。

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
  @Override
  public void onTabSelected(TabLayout.Tab tab) {
    viewPager.setCurrentItem(tab.getPosition());
  }

  @Override
  public void onTabUnselected(TabLayout.Tab tab) {

  }

  @Override
  public void onTabReselected(TabLayout.Tab tab) {
    Toast.makeText(getContext, "test", Toast.LENGTH_SHORT).show();
    // toast is not working.
  }
});

return view;

我想刷新片段,因为我使用了API,每次选中该选项卡时我都需要重新获取数据。

6 个答案:

答案 0 :(得分:0)

看一下本教程。如有任何问题,你可以在那里问。 http://blog.tamanneupane.com/fragment-refresh/

答案 1 :(得分:0)

if(viewPager.getCurrentItem() == 0) {
                Fragment1 fragment1 = (Fragment1) adapter.instantiateItem(viewPager, 0);
                if (fragment1 != null) {
                    fragment1.fragmentBecameVisible();
                }
            }else if(viewPager.getCurrentItem() == 1) {
                Fragment2 fragment2 = (Fragment2) adapter.instantiateItem(viewPager, 1);

                if (fragment2 != null) {
                    fragment2.fragmentBecameVisible();
                }
            }
            viewPager.setCurrentItem(tab.getPosition());

添加这两个界面

public interface Fragment1 {
    void fragmentBecameVisible();
}

public interface Fragment2 {
    void fragmentBecameVisible();
}

然后从该界面实现片段并在你的碎片中使用方法

@Override
public void fragmentBecameVisible() {
    //do your task heree
}

答案 2 :(得分:0)

您可以更新片段的onResume(),如下所述,或者设置viewPager.setOffscreenPageLimit(0/1); //我认为它0但你可以尝试&看看哪些对你有用!

@Override
        public void onResume() {
            super.onResume();

            if(somecondition) {
               call code executing API functionality
            }

        }

答案 3 :(得分:0)

重写此方法并在此处调用方法。

 @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);

          if(isVisibleToUser){

                 // this will call when the fragment is visible to the user.
                 // call your API or fetch_data() here.           

                   }

        }

答案 4 :(得分:0)

如果基本API为18+,则可以使用pull to refresh方法 你可以在这里引用https://github.com/codepath/android_guides/wiki/Implementing-Pull-to-Refresh-Guide它显示了如何使用pull to refresh刷新片段。在我的应用程序中使用它。欢呼声。

答案 5 :(得分:0)

试试这个 在tablayout中设置viewpager后设置给定代码:

TabLayout.Tab tab = tabLayout.getTabAt(current_tab);

tab.select();