Android Viewpager首次加载时显示错误数据 [英] Android Viewpager display wrong data on first load

查看:178
本文介绍了Android Viewpager首次加载时显示错误数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

/**i'm using android.support.v4.view.ViewPager with tabhost for show a tab data, i have 3 tab when first time it is load 1st tab is load 3rd tab data ...3rd tab is load 1st tab data .and 2nd tab is correctly loads own data

我的viewpager和tabhost的代码是Thx in Advance **/

My Code For viewpager and tabhost is Thx in Advance **/

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首次加载时显示错误数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆