【问题标题】:ViewPager Not showing the menusViewPager 不显示菜单
【发布时间】:2014-03-17 19:18:20
【问题描述】:

我正在使用片段制作示例查看器。我想要的是显示片段菜单在我从一个滑动到另一个时动态变化。我正在使用 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);
    }
}

片段 1 和片段 2。爪哇

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

}

【问题讨论】:

  • 您是指 TitleProvider 吗?它将在 viewpager 上显示您的片段的标题..
  • 否则您可以继续使用 TitlePageIndicator。检查此链接:stackoverflow.com/questions/10037887/…
  • 没有。我的意思是我想在fragment1上显示名为“set”的菜单选项,在fragment2上显示“get”选项。如何动态显示。
  • @Lokesh: 它应该出现在操作栏上。
  • 菜单选项仅显示在操作栏上。目前它在哪里显示??

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


【解决方案1】:

只需通过 Change your method From 提供线索:

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

    }

【讨论】:

猜你喜欢
  • 2015-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
相关资源
最近更新 更多