gpt4 book ai didi

java - 在 TabLayout 中滑动选项卡时 fragment 不会刷新

转载 作者:行者123 更新时间:2023-12-02 03:41:18 25 4
gpt4 key购买 nike

我们正在开发一个项目,其中一个 tablayout 中有四个选项卡。这四个选项卡中的每一个都是 fragment ,并且在加载时调用了 Web 服务。我们需要再次调用 Web 服务,以便我们可以刷新滑动时的 fragment 。但是,当加载第一个 fragment 时,当我滑动选项卡并返回到第一个 fragment 时,它不会刷新。以下是我们到目前为止所尝试的:

tabLayout = (TabLayout) findViewById(R.id.tablayout);

tabLayout.addTab(tabLayout.newTab().setCustomView(tabView));
tabLayout.addTab(tabLayout.newTab().setText("TAB 1"));
tabLayout.addTab(tabLayout.newTab().setText("TAB 2"));
tabLayout.addTab(tabLayout.newTab().setText("TAB 3"));
tabLayout.addTab(tabLayout.newTab().setText("TAB 4"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
final PagerAdapter adapter = new PagerAdapter
(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(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) {

}
});

The adapter class:

public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;

public PagerAdapter(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}

@Override
public Fragment getItem(int position) {

switch (position) {
case 0:
TabFragment2015 tab1 = new TabFragment2015();
return tab1;
case 1:
TabFragmentXchanges tab2 = new TabFragmentXchanges();
return tab2;
case 2:
TabFragmentToday tab3 = new TabFragmentToday();
return tab3;
case 3:
TabFragment2016 tab4=new TabFragment2016();
return tab4;
default:
return null;
}
}

@Override
public int getCount() {
return mNumOfTabs;
}
}

使用了四个选项卡。我使用以下代码首先加载第三个选项卡:

tabLayout.setScrollPosition(2, 0f, true);
viewPager.setCurrentItem(2);

当我从第三个选项卡滑动到第二个选项卡,然后再次打开第三个选项卡时, fragment 不会重新加载。但是如果我滑动到第一个选项卡,然后打开第三个选项卡,它会刷新。我希望选项卡刷新每次滑动。请帮忙..

最佳答案

您只需添加以下代码:

tabLayout = (TabLayout) findViewById(R.id.tablayout);

tabLayout.addTab(tabLayout.newTab().setCustomView(tabView));
tabLayout.addTab(tabLayout.newTab().setText("TAB 1"));
tabLayout.addTab(tabLayout.newTab().setText("TAB 2"));
tabLayout.addTab(tabLayout.newTab().setText("TAB 3"));
tabLayout.addTab(tabLayout.newTab().setText("TAB 4"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
final PagerAdapter adapter = new PagerAdapter
(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
adapter.refreshFragment(tab.getPosition())

}

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

}

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

}
});

适配器类:

public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
TabFragment2015 tab1;
TabFragmentXchanges tab2;
TabFragmentToday tab3;
TabFragment2016 tab4;
public PagerAdapter(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}

@Override
public Fragment getItem(int position) {

switch (position) {
case 0:
tab1 = new TabFragment2015();
return tab1;
case 1:
tab2 = new TabFragmentXchanges();
return tab2;
case 2:
tab3 = new TabFragmentToday();
return tab3;
case 3:
tab4=new TabFragment2016();
return tab4;
default:
return null;
}
}

public void refreshFragment(int position) {
switch (position) {
case 1:
tab1.refreshApi();
break;
case 2:
tab2.refreshApi();
break;
case 3:
tab3.refreshApi();
break;
case 4:
tab4.refreshApi();
break;
}
}

@Override
public int getCount() {
return mNumOfTabs;
}}

并在所有四个 fragment 中添加以下方法:

public void refreshApi(){
//write the code here to refresh your Api
}

关于java - 在 TabLayout 中滑动选项卡时 fragment 不会刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36807580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com