【发布时间】:2018-04-27 21:22:35
【问题描述】:
大家好!
我的 TabMenu 有问题,下面我发布了一个 GIF,它显示了它是如何工作的,但它不能正常工作。
它在代码中的工作原理:
MainActivity(ViewPager, TabsLayout)->FragmnetAdapter(用于标签布局)
它必须是:“Home”(HomeFragment)、“History”(HistoryFragment)、“Places”(PlacesFragment)
现在,当它从 "Home" 开始时,开始 "Home" 但是 在“Hstory”上调用“History”,调用“Places”
但是在代码中我没有看到一些问题,请您帮帮我:)
这是代码:
MainActivity:
public class MainActivity extends AppCompatActivity {
@BindView(R.id.appToolbarMainTabs)
Toolbar appToolbar;
@BindView(R.id.tabLayoutTabs)
TabLayout tabs;
@BindView(R.id.viewPager)
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
setSupportActionBar(appToolbar);
setupViewPager(viewPager);
tabs.setupWithViewPager(viewPager);
}
// Add Fragments to Tabs
private void setupViewPager(ViewPager viewPager) {
FragmentTabsAdapter adapter = new FragmentTabsAdapter(getSupportFragmentManager());
adapter.addFragment(new HomeFragment(), getString(R.string.home_tab));
adapter.addFragment(new HistoryFragment(), getString(R.string.history_tab));
adapter.addFragment(new PlacesFragment(), getString(R.string.places_tab));
viewPager.setAdapter(adapter);
}}
片段适配器:
public class FragmentTabsAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public FragmentTabsAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}}
我认为不需要 Home&History&PlaceFragment
非常感谢!:)
【问题讨论】:
-
我假设在您的“PlacesFragment”中您正在显示 ProgressDialog? PagerAdapter 的工作方式是预加载可以滑动到下一个的片段,因此当您转到“HistoryFragment”时,它也会创建“PlacesFragment”。无论如何,ProgressDialog 是一种已弃用的行为模式,最好将 ProgressBar 内联在您的视图中,然后在加载完成后切换视图。
-
@AChez9 是的,你是对的,但我不想使用内联 ProgressBar,如果我理解正确,你会为它是 tabsMenu 的正确工作感到难过吗?我的代码没有问题吗?
标签: android android-fragments android-viewpager android-tabs android-tablelayout