gIrL
gIrL

Reputation: 139

ViewPager doesnt load inside fragment when activity start

I have an activity having tabs(including viewpager) and each tab contained fragments with viewpager at bottom of activity. When my activity first start then 0th tab loads and showing map(inside fragment) but the viewpager doesn't load. When I switching tabs and again return to map fragment then it loads the viewpager. Why my map fragment viewpager doesn't load at first time, What I am missing. Please help.

MainActivity class

public class MainActivity extends FragmentActivity implements
        ActionBar.TabListene, GooglePlayServicesClient.ConnectionCallbacks,
        GooglePlayServicesClient.OnConnectionFailedListener {

    static GoogleMap map;
    static ViewPager mMap, mList,
                mSetting;

    ImagePAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try{

            mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            actionBar = getActionBar();
            actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
            actionBar.setDisplayHomeAsUpEnabled(true);

            mSectionsPagerAdapter = new SectionsPagerAdapter(
                    getSupportFragmentManager());
            mViewPager = (ViewPager) findViewById(R.id.pager);
            mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                        @Override
                        public void onPageSelected(int position) {
                            actionBar.setSelectedNavigationItem(position);
                        }
                    });
            mAdapter = new ZAdapter(getApplicationContext(), mList);

            mViewPager.setAdapter(mSectionsPagerAdapter);

            for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
                actionBar.addTab(actionBar.newTab().setText(listTab[i]).setTabListener(this));
            }                   
        }catch(Exception e){
            Logger.writeLOG(LOG_TAG, "@onCreate ", e);
        }
    }
}

SectionsPagerAdapter class

public class SectionsPagerAdapter extends FragmentPagerAdapter {
    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }

    @Override
    public Fragment getItem(int position) {
        // TODO Auto-generated method stub

        switch (position) {
        case 0:
            return new MapFragment();
        case 1:
            return new ListFragment();
        case 2:
            return new SettingFragment();
        }
        return null;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return listTab.length;
    }
}

ListFragment

public class ListFragment extends Fragment {
    View rootView = null;

    public Fragment newInstance() {
          return new ListFragment();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        if (null == savedInstanceState)rootView = inflater.inflate(R.layout.listfragment, container,false);

        ViewPager mPager = (ViewPager) rootView.findViewById(R.id.pagerAddList);

        MainActivity.mList = mPager ;
        mPager .setAdapter(mAdapter);
        mPager .setCurrentItem(0);
    }
}

MapFragment class

public class MapFragment extends Fragment {

    GoogleMap map;
    public Fragment newInstance() {
          return new MapFragment();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        try{
            Log.e("", "onCreateView");

            if (null == savedInstanceState) rootView = inflater.inflate(R.layout.lay_map, container, false);

                map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

                MainActivity.map = map;

                ViewPager mPager = (ViewPager) rootView.findViewById(R.id.pagerAddMap);

                MainActivity.mMap = mPager;
                mPager.setAdapter(mAdvertisementAdapter);
                mPager.setCurrentItem(0);   
        }
    }
}

SettingFragment class

public class SettingFragment extends Fragment {

    View rootView = null;

    public Fragment newInstance() {
        return new SettingFragment();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        try{
            if (null == savedInstanceState)rootView = inflater.inflate(R.layout.settinglayout, container,false);

            ViewPager mPager = (ViewPager) rootView.findViewById(R.id.pagerAddSetting);

            MainActivity.mSetting = mPager;

            mPager.setAdapter(mAdvertisementAdapter);
            mPager.setCurrentItem(0);
        }

        @Override
        public void onResultsSucceeded(String result) {

            mAdapter = new ImagePAdapter(listUrls);
            mLocatorGlobal.setListUrls(listUrls);

            if (mList != null) {
                mList.setAdapter(mAdapter);
            }
            if (mSetting != null) {
                mSetting.setAdapter(mAdapter);
            }
            if (mMap != null) {
                mMap.setAdapter(mAdapter);
            }   
        }   
    }
}

Upvotes: 0

Views: 972

Answers (1)

Ayman Mahgoub
Ayman Mahgoub

Reputation: 4210

I think problem here is using map fragment inside viewPager, can you replace it with any other fragment and try it again.

Check this link, if the problem is using map fragment inside viewPager

Upvotes: 1

Related Questions