A N Syafiq.
A N Syafiq.

Reputation: 153

Changing Actionbar Title when a tab is swiped

so i set up a Tab Acitivty in my project but the thing is i want to change my ActionBar title based on whichever tab that is active.

i have all class in single file (default from android studio), i've follow so many tutorials and stuff but still didnt work.

this is my Tab Activity code

public class TabPages extends AppCompatActivity{


    private SectionsPagerAdapter mSectionsPagerAdapter;


    private ViewPager mViewPager;
    private int[] tabIcons = {
            R.drawable.ic_search_24dp,
            R.drawable.ic_forum_24dp,
    };


    @Override
    public void onBackPressed() {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tab_pages);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

       
        mViewPager = (ViewPager) findViewById(R.id.container);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(mViewPager);



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        
        getMenuInflater().inflate(R.menu.addbutton,menu);
        getMenuInflater().inflate(R.menu.menu_tab_pages, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        
        int id = item.getItemId();

        if(id==R.id.signOut){
            FirebaseAuth.getInstance().signOut();
            startActivity(new Intent(TabPages.this, MainActivity.class));
        }

        return super.onOptionsItemSelected(item);
    }
    
    public static class PlaceholderFragment extends Fragment {
        
        private static final String ARG_SECTION_NUMBER = "section_number";

        public PlaceholderFragment() {

        }


        public static PlaceholderFragment newInstance(int sectionNumber) {
            PlaceholderFragment fragment = new PlaceholderFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);
            return fragment;
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView;
            if(getArguments().getInt(ARG_SECTION_NUMBER)==1){
                return rootView = inflater.inflate(R.layout.fragment_browse_title, container, false);
            } else{
                return rootView = inflater.inflate(R.layout.fragment_chat_history, container, false);
            }


        }
    }


    lic class SectionsPagerAdapter extends FragmentPagerAdapter{

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

        @Override
        public Fragment getItem(int position) {
            
            return PlaceholderFragment.newInstance(position + 1);
        }

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

        @Override
        public CharSequence getPageTitle(int position) {

            return null;
        }

    }
}
Tthanks for the help

Upvotes: 0

Views: 1599

Answers (1)

Zhi Kai
Zhi Kai

Reputation: 1587

tabLayout.setupWithViewPager(mViewPager);
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            mViewPager.setCurrentItem(tab.getPosition());
            //Set title here using setTitle()
        }

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

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

Please give the above a try.

Upvotes: 2

Related Questions