Android Viewpager 在第一次加载时显示错误数据

标签 android android-fragments tabs android-viewpager android-tabhost

/**我正在使用 android.support.v4.view.ViewPager 和 tabhost 来显示标签数据,我有 3 个标签 第一次加载时,第一个选项卡加载第三个选项卡数据...第三个选项卡加载第一个选项卡数据。第二个选项卡正确加载自己的数据

我的 viewpager 和 tabhost 代码提前致谢 **/

private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private String[] tabsTitles = {"SELL", "RENT", "PROJECT"};

viewPager = (ViewPager) findViewById(R.id.pager);
        mAdapter = new TabsPagerAdapter(getSupportFragmentManager(), tabsTitles.length);
        viewPager.setAdapter(mAdapter);

        final TabHost tabHost=(TabHost)findViewById(android.R.id.tabhost);
        tabHost.setup();

        for (int i = 0; i < tabsTitles.length; i++) {
            String tabName = tabsTitles[i];
            TabHost.TabSpec spec=tabHost.newTabSpec(tabName);
            spec.setContent(R.id.fakeTabContent);
            spec.setIndicator(tabName);
            tabHost.addTab(spec);
        }
        tabHost.setOnTabChangedListener(new OnTabChangeListener() {

            @Override
            public void onTabChanged(String tabId) {
                for (int i = 0; i < tabsTitles.length; i++) {
                    if (tabId.equals(tabsTitles[i])) {
                        viewPager.setCurrentItem(i);
                        break;
                    }
                }
            }
        });

viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                Toast.makeText(getApplicationContext(), String.valueOf(position), Toast.LENGTH_LONG).show();
                tabHost.setCurrentTab(position);
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }
        });

最佳答案

适配器代码有问题

public Fragment getItem(int index) { 
    switch (index % 3) {
     case 2: // Top Rated fragment activity return
     new ProjectFragment(); 
    case 1: // Games fragment activity 
    return new RentFragment(); 
    case 0: // Movies fragment activity
     return new SellFragment();
     } return null; 
    } 

关于Android Viewpager 在第一次加载时显示错误数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28912454/

相关文章:

jQuery - 带视频的选项卡...当我在选项卡之间切换时如何让视频停止播放?

java - 点击主页按钮时 libGDX 纹理消失

Jquery tabs cookie 使用现有脚本

android - setVisibleXRangeMaximum 和更改数据集未将视口(viewport)更新到预期的缩放级别

android - 如何在运行时使用带参数的 FragmentFactory?

Android fragment 和动画

java - LayoutInflater 膨胀 fragment

javascript - 为什么 chrome 标签不起作用?

Android 压缩位图

Android - 如何排除内部两个级别的组?