Android Viewpager display wrong data on first load

我怕爱的太早我们不能终老 提交于 2019-12-24 11:34:17

问题


/**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

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

            }
        });

回答1:


There was a issue in the adapter code

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; 
    } 


来源:https://stackoverflow.com/questions/28912454/android-viewpager-display-wrong-data-on-first-load

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!