gpt4 book ai didi

android - FragmentPagerAdapter getItem 位置错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:30 24 4
gpt4 key购买 nike

我遇到了 FramentPageAdapter 的奇怪问题

主 Activity .java

@SuppressLint("ValidFragment")
public class MainActivity<DashboardActivity> extends FragmentActivity implements ActionBar.TabListener {
...
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});

actionBar.addTab(actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(0)).setTabListener(this).setIcon(R.drawable.rating_good));
actionBar.addTab(actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(1)).setTabListener(this).setIcon(R.drawable.action_search));
actionBar.addTab(actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(2)).setTabListener(this).setIcon(R.drawable.action_search));
}
...
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
public Fragment getItem(int position) {
Fragment fragment = null;
switch(position) {
case 0:
fragment = new Fragment0();
break;
case 1:
fragment = new Fragment1();
break;
case 2:
fragment = new Fragment2();
break;
}
return fragment;
}
@Override
public int getCount() {
return 3;
}
/*
* Title
*/
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return getString(R.string.title_section0).toUpperCase(l);
case 1:
return getString(R.string.title_section1).toUpperCase(l);
case 2:
return getString(R.string.title_section2).toUpperCase(l);
}
return null;
}
}

当我尝试在 3 个选项卡之间切换时,public Fragment getItem(int position) 返回错误的位置。当我创建仅包含 2 个选项卡的应用程序时,一切正常。添加超过 2 个,产生奇怪的问题。从 0 切换到 1 位置 - 工作正常,从 1 切换到 0 - 工作正常,从 1 切换到 2 位置 - 工作正常,但是,当我尝试从 2 返回到 1 位置时,public Fragment getItem(int position) - int position 返回“0”而不是“1”。有人帮我解决这个问题吗?

最佳答案

好的,我找到了解决方案。首先,getItem“int position”,并不表示当前显示 fragment 。要显示 3 个或更多选项卡,而不卸载第一个 fragment ,您必须添加此行:

mViewPager.setOffscreenPageLimit(3);

故事结束...

关于android - FragmentPagerAdapter getItem 位置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17391460/

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