简体   繁体   English

标签更改时如何更改工具栏标题(查看分页器)?

[英]How to change toolbar title when tab changes(View Pager)?

I am trying to do something simple. 我正在尝试做一些简单的事情。 But i don't know why it doesn't work. 但是我不知道为什么它不起作用。 I'm just want to change the toolbar title to match the fragment on tab changes. 我只想更改toolbar标题以匹配选项卡更改上的片段。 But somehow it will get the wrong value. 但是,它将以某种方式获得错误的价值。 Like when i choose A it will set the title B. And sometimes the title won't changes at all. 就像我选择A时,它将设置标题B。有时,标题根本不会更改。 How can i do this? 我怎样才能做到这一点? Thank you. 谢谢。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dashboard);
        toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
        mViewPager = findViewById(R.id.viewpager);
        mViewPager.setAdapter(mSectionsPagerAdapter);
        TabLayout tabLayout = findViewById(R.id.tabs);
        mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
        tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));

        navigationView = findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }

public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            switch (position){
                case 0:
                    //toolbar.setTitle(R.string.home);
                    FragmentMainHome fragmentMainHome = new FragmentMainHome();
                    return fragmentMainHome;
                case 1:
                    //toolbar.setTitle(R.string.activities);
                    FragmentMainActivities fragmentMainActivities = new FragmentMainActivities();
                    return fragmentMainActivities;
                case 2:
                    //toolbar.setTitle(R.string.people);
                    FragmentMainPeople fragmentMainPeople = new FragmentMainPeople();
                    return fragmentMainPeople;
                case 3:
                    //toolbar.setTitle(R.string.posts);
                    FragmentMainPosts fragmentMainPosts = new FragmentMainPosts();
                    return fragmentMainPosts;
                case 4:
                    //toolbar.setTitle(R.string.media);
                    FragmentMainMedia fragmentMainMedia = new FragmentMainMedia();
                    return fragmentMainMedia;

            }
            return null;
        }

        @Override
        public int getCount() {
            // Show total pages.
            return 5;
        }
    }

Try this 尝试这个

toolbar = (Toolbar) findViewById(R.id.toolbar);            
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("My title");

There are two ways, in your manifest you can change your app name in your Activity 有两种方法,您可以在清单中更改“ Activity应用名称

<activity
            android:name=".MainActivity"
            android:label="@string/app_name"  <------ Activity Name
            android:theme="@style/AppTheme.NoActionBar">

</activity>

or you can do it programmatically like this: 或者您可以通过编程方式执行以下操作:

getSupportActionBar().setTitle("ACTIVITY NAME");

Use addOnPageChangeListener : 使用addOnPageChangeListener

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

        @Override
        public void onPageSelected(int position) {
            switch (position) {
                case 0:
                    toolbar.setTitle(R.string.home);
                    break;
                case 1:
                    toolbar.setTitle(R.string.activities);
                    break;
                case 2:
                    toolbar.setTitle(R.string.people);
                    break;
                case 3:
                    toolbar.setTitle(R.string.posts);
                    break;
                case 4:
                    toolbar.setTitle(R.string.media);
                    break;
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {}
    });

Try this 尝试这个

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {

            switch (tab.getPosition()) {

                case 0:
                    viewPager.setCurrentItem(0);
                    toolbar.setTitle("Title_0");
                    break;

                case 1:
                    viewPager.setCurrentItem(1);
                    toolbar.setTitle(R.string.title_1);
                    break;

                case 2:
                    viewPager.setCurrentItem(2);
                    toolbar.setTitle(R.string.title_2);
                    break;

                case 3:
                    viewPager.setCurrentItem(3);
                    toolbar.setTitle(R.string.title_3);
                    break;

            }

        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });

Try this. 尝试这个。 Add this code after tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager)); tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));之后添加此代码tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            if (getSupportActionBar() != null){
                getSupportActionBar().setTitle(tab.getText());
            }
        }
        @Override
        public void onTabUnselected(TabLayout.Tab tab) {}
        @Override
        public void onTabReselected(TabLayout.Tab tab) {}
    });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 选项卡更改时如何更改活动标题(SlidingTabLayout) - How to change Activity title when a tab changes (SlidingTabLayout) 在视图分页器中滚动时,折叠工具栏不会折叠 - Collapsing Toolbar not collapsing when scrolled in view pager 如何以编程方式更改工具栏样式? 当我尝试更改弹出菜单而不是工具栏时 - How to change toolbar style programmatically? When I try to do this popup menu changes instead of the toolbar 如何在Android应用程序中更改工具栏的标题? - How to change the toolbar's title in android app? 突出显示标签页查看器android - Highlighting tab view pager android 如何将标签布局与底部导航和视图分页器绑定? - how to bind tab layout with bottom navigation and view pager? 更改工具栏的背景颜色和标题 - Change Toolbar Background Color and Title 当我从下一个选项卡返回时,我丢失了查看寻呼机数据 - I lost my View Pager Data When I Back From next tab 从工具栏选择菜单图标时,如何更改Recycler View ViewHolder editext? - How can i change Recycler View ViewHolder editext when i select menu icon from toolbar ? 单击导航抽屉项时如何显示视图寻呼机的选项卡而不重叠? - how to show tab of view pager on click of navigation drawer item without overlaping?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM