首页 文章

活动开始时,ViewPager不会加载内部片段

提问于
浏览
0

我有 activity 有标签(包括 viewpager ),每个标签包含 activity 底部的viewpager片段 . 当我的 activity 首次启动然后第0个选项卡加载并显示 Map (在 fragment 内)但 viewpager 没有加载 . 当我切换标签并再次返回到 Map fragment 然后它加载 viewpager . 为什么我的 Map 片段 viewpager 第一次没有加载,我缺少什么 . 请帮忙 .

MainActivity 上课

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 上课

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 上课

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 上课

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

1 回答

  • 1

    我认为这里的问题是在viewPager中使用map片段,你可以用任何其他片段替换它并再次尝试 .

    如果问题是在viewPager中使用map片段,请检查此link

相关问题