android如何显示 viewpager fragment 操作栏上的位置吗?

发布时间: 2016/10/10 21:59:34
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

九个fragment在 viewpager 。我想要显示 fragment 行动栏手段上的位置,如果用户对第五次工作 fragment 然后我想要的右上角显示 5 actionbar 。 我使用以下代码,但它只显示 1 但是当用户 swipe 和移动到第二个 fragment 然后它不显示 2。 如何达致这目标或任何人可以建议我不同的想法?

menu_fragment.xml-

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.prgguru.example.MainActivity" >

        <item
            android:id="@+id/fragmentPos"
            android:title=""
            android:orderInCategory="100"
            app:showAsAction="always|collapseActionView"/>

</menu>

我 addOnPageChangeListener 如下-

pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {


            }

            @Override
            public void onPageSelected(int position) {

                currentPage = position + 1;


            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });




@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        //inflater.inflate(R.menu.menu_item, menu);
        getMenuInflater().inflate(R.menu.menu_fragment, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Take appropriate action for each action item click

        switch (item.getItemId()) {

            case R.id.fragmentPos:
                 this.setTitle(currentPage);
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

解决方法 1:

如果你想显示 viewpager fragment 在您操作栏上的位置,然后编辑下面的代码到我 bove 问题和你能够成功地显示页。

对你的 onPageScrolled-线的地方以下

supportInvalidateOptionsMenu();

下面是 onCreateOptionsMenu-

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        //inflater.inflate(R.menu.menu_item, menu);
        getMenuInflater().inflate(R.menu.menu_fragment, menu);

        MenuItem item = menu.findItem(R.id.fragmentPos);
        item.setTitle(String.valueOf(pos));

        return super.onCreateOptionsMenu(menu);
    }
赞助商