这是我的代码。
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,每次选中该选项卡时我都需要重新获取数据。
答案 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();