【问题标题】:How to show viewpager fragment position on action bar?如何在操作栏上显示 viewpager 片段位置?
【发布时间】:2016-09-17 12:54:44
【问题描述】:

我在 viewpager 中有九个片段。我想在操作栏上显示片段位置意味着如果用户处理第五个片段,那么我想在操作栏的右上角显示 5。我正在使用下面的代码,但它只显示 1,但是当用户滑动并移动到第二个片段时,它不显示 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);
        }
    }

【问题讨论】:

    标签: android android-fragments android-actionbar android-viewpager


    【解决方案1】:

    如果您想在操作栏上显示 viewpager 片段位置,然后将下面的代码编辑到我的 bove ques 中,您就可以成功显示页面编号。

    在您的 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);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多