选项菜单在视图寻呼机android中被清除?

时间:2014-03-04 17:16:05

标签: android android-viewpager android-optionsmenu

我正在使用操作栏选项卡中的选项菜单,查看寻呼机和嵌套片段,当我使用制表符从fragmentA切换到fragmentB时,菜单项工作正常,但是当我尝试使用视图寻呼机选项时,选项会变得无形

public class RTHomeTabFragment extends Fragment implements TabListener,OnBackButtonPressInterfaceForFragment{
            public ActionBarActivity parentActivity;
            private ActionBar actionBar;
            ViewPager mViewPager;
            public static int currentPage;



            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                RTMessagingUtils.log(getClass().getName(), "onCreateView");
                View view = inflater.inflate(R.layout.viewpager_tabs, container,false);
                parentActivity = (ActionBarActivity) getActivity();
                actionBar = parentActivity.getSupportActionBar();
                mViewPager = (ViewPager) view.findViewById(R.id.pager);
            /*  actionBar.setDisplayShowTitleEnabled(false);
                actionBar.setDisplayShowHomeEnabled(false);*/
                actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
                actionBar.setCustomView(null);
                actionBar.removeAllTabs();
              List<Fragment> fragments  = getFragments();
                pagerAdapter adapter = new pagerAdapter(getChildFragmentManager(), getFragments());
                mViewPager.setAdapter(adapter);
                currentPage=mViewPager.getCurrentItem();
                Log.d("TestFragments", "currentPage======"+currentPage);
                mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                    @Override
                    public void onPageSelected(int position) {
                        actionBar.setSelectedNavigationItem(position);
                          currentPage=mViewPager.getCurrentItem();

                            Log.d("TestFragments", "currentPage======"+currentPage);
                    }
                });


                for (int i = 0; i < adapter.getCount(); i++) {
                    actionBar.addTab(actionBar.newTab().setText(adapter.getPageTitle(i)).setTabListener(this));
                }

                return view;
            }

            private List<Fragment> getFragments(){
                List<Fragment> fList = new ArrayList<Fragment>();
        //        add fragments here
                fList.add(new Test1());
                fList.add(new Test2());
                fList.add(new Test3());
                return fList;
            }

            class pagerAdapter extends FragmentPagerAdapter{

                private List<Fragment> fragments;

                public pagerAdapter(FragmentManager fm, List<Fragment> fragments){
                    super(fm);
                    this.fragments = fragments;
                }

                @Override
                public Fragment getItem(int position) {
                    return this.fragments.get(position);
                }

                @Override
                public int getCount() {
                    return this.fragments.size();
                }

                @Override
                public CharSequence getPageTitle(int position) {
                    Locale l = Locale.getDefault();
                    switch (position) {
                    case 0:

                        return getString(R.string.db_jio_chat_chats).toUpperCase(l);

                    case 1:
                        return getString(R.string.db_jio_chat_groups).toUpperCase(l);
                    case 2:
                        return getString(R.string.db_jio_chat_contacts).toUpperCase(l);
                    /*case 3:
                        return getString(R.string.db_jio_chat_my_profile).toUpperCase(l);
                    case 4:
                        return getString(R.string.db_jio_chat_location).toUpperCase(l);
                    case 5:
                        return getString(R.string.db_jio_chat_about).toUpperCase(l);*/
                    }
                    return null;
                }

            }

            @Override
            public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
                // TODO Auto-generated method stub

            }
            @Override
            public void onCreate(Bundle savedInstanceState) {
                // TODO Auto-generated method stub
        //        setHasOptionsMenu(true);
                super.onCreate(savedInstanceState);
            }
            @Override
            public void onTabSelected(Tab arg0, FragmentTransaction arg1) {
                // TODO Auto-generated method stub
                mViewPager.setCurrentItem(arg0.getPosition());
            }

            @Override
            public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {
                // TODO Auto-generated method stub

            }
            @Override
            public void onResume() {
                super.onResume();
                RTMessagingUtils.log(getClass().getName(), "onResume");
            }
            @Override
            public void onPause() {
                super.onPause();
                RTMessagingUtils.log(getClass().getName(), "onPause");

            }




    }

1 个答案:

答案 0 :(得分:0)

在你的getItem方法中执行以下测试:

@Override
public Fragment getItem(int position) {
       if(position == 0)           
          return new Test1();
       else 
          return new Test2();
}

看看这是否有效,如果有效,我会在后面找到解释...