标签菜单android - 不正确的调用片段
Posted
技术标签:
【中文标题】标签菜单android - 不正确的调用片段【英文标题】:Tabs menu android - not correct call fragments 【发布时间】: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 的正确工作感到难过吗?我的代码没有问题吗? 【参考方案1】:标签和 ViewPager 没问题,它总是至少预加载上一个和下一个片段。
您只能在显示片段并且仍在加载信息时显示对话框。
@Override
public void setUserVisibleHint(boolean isVisibleToUser)
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser)
if (fragmentIsLoadingInfo()) // implement this
showLoading(); // implement this
还可以检查 ViewPager 的 setOffscreenPageLimit 以了解正在发生的事情并更新此值,例如,如果您希望同时加载所有三个片段。遗憾的是,如果将其设置为 0,它仍然像 1 一样工作。
【讨论】:
谢谢哥们,明天我会试试的:)我会写新的信息!以上是关于标签菜单android - 不正确的调用片段的主要内容,如果未能解决你的问题,请参考以下文章