ViewPager不显示菜单

时间:2014-03-17 09:53:22

标签: android android-fragments android-viewpager android-appcompat

我正在使用片段处理示例viewpager。我想要的是显示片段菜单从一个菜单切换到另一个时动态变化。我正在使用AppCompat库。我正在获取菜单,但不在操作栏上。请帮帮我。

我的代码是这样的。

MainActivity.java

public class MainActivity extends ActionBarActivity {
    ActionBar actionBar;
    ViewPager pager;
    Tab tab;
    int selectedPage = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        pager = (ViewPager) findViewById(R.id.tabs);
        FragmentManager manager = getSupportFragmentManager();

        ViewPager.SimpleOnPageChangeListener pageListener = new ViewPager.SimpleOnPageChangeListener(){

            public void onPageSelected(int position){
                super.onPageSelected(position);
                selectedPage = position;
                actionBar.setSelectedNavigationItem(position);
            }
        };

        pager.setOnPageChangeListener(pageListener);

        PagerAdapter adapter = new PagerAdapter(manager);

        pager.setAdapter(adapter);


        TabListener tabListener = new TabListener() {

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

            }

            @Override
            public void onTabSelected(Tab tab, FragmentTransaction ft) {
                // TODO Auto-generated method stub
                pager.setCurrentItem(tab.getPosition());
            }

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

            }
        };

        //Creating tabs
        tab = actionBar.newTab().setText("Fragment1").setTabListener(tabListener);
        actionBar.addTab(tab);

        tab = actionBar.newTab().setText("Fragment2").setTabListener(tabListener);
        actionBar.addTab(tab);
    }
}

Fragment1和Fragment2。的java

public class Fragment2 extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_main, container, false);
        return view;
    }

    /* (non-Javadoc)
     * @see android.support.v4.app.Fragment#onCreateOptionsMenu(android.view.Menu, android.view.MenuInflater)
     */
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Auto-generated method stub
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.fragment2, menu);

    }

    /* (non-Javadoc)
     * @see android.support.v4.app.Fragment#onActivityCreated(android.os.Bundle)
     */
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
        setHasOptionsMenu(true);
    }

}

1 个答案:

答案 0 :(得分:0)

通过改变您的方法来提供跟踪:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Auto-generated method stub
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.fragment2, menu);

    }

要:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Auto-generated method stub
        inflater.inflate(R.menu.fragment2, menu);
        super.onCreateOptionsMenu(menu, inflater);

    }

并在menu.xml中更改项目

<item
            android:id="@+id/something"
            android:icon="@drawable/ic"
            yourapp:showAsAction="ifRoom"
            android:title="@string/something"/>

别忘了添加setHasOptionsMenu(true);

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        setHasOptionsMenu(true);

    }
相关问题