Reputation: 139
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
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