0

This is a variant on a familiar problem (such as this: Setting action bar title in ViewPager)

I have a ViewPager setup in my main activity. The ViewPager is set to represent a date. I've set it up with an OnPageChangeListener and onPageListener to set the toolbar title to a given date (the default on startup being the current date). onPageListener is called, but some other event is called afterwards, and it sets the toolbar title back to the defined app name. Even setting it explicitly in the activity's onCreate doesn't fix the title, it is still replaced by the app name.

public class MainActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private Date _displayedDate;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        final ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);

        viewPager.setAdapter(new DatePagerAdapter(getSupportFragmentManager()));
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }

            @Override
            public void onPageSelected(int position) {
                _displayedDate = DateUtils.offsetDate(position);
                showDisplayedDate(); // no apparent effect
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

        _displayedDate = new Date();
        viewPager.setCurrentItem((int)DateUtils.getDayOffset(_displayedDate));
        showDisplayedDate();  // no apparent effect
    }

    public void showDisplayedDate() {
        if (_displayedDate != null) {
            toolbar.setTitle(_displayedDate.toString())); // simplified version of date display
        }
    }
}

public class DatePagerAdapter extends FragmentStatePagerAdapter

So, what gives? How do I set the title based on the ViewPager's initial display?

Community
  • 1
  • 1
MPelletier
  • 16,256
  • 15
  • 86
  • 137

1 Answers1

0

As stated here, this removes the automatic app title in the toolbar, and the rest of the logic takes care of displaying the date:

getSupportActionBar().setDisplayShowTitleEnabled(false);
Community
  • 1
  • 1
MPelletier
  • 16,256
  • 15
  • 86
  • 137