无法更改片段内的SupportActionBar标题

时间:2018-11-30 11:39:03

标签: android

我有一个带有主Activity且托管FragmentPagerAdapter的应用。 在Activity的onCreate方法中,我像这样设置操作栏标题:

@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);

   Toolbar toolbar = findViewById(R.id.toolbar);
   setSupportActionBar(toolbar);
   if(getSupportActionBar() != null)
       getSupportActionBar().setTitle("test");
   getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

可以正常工作并设置操作栏标题。

现在,我正尝试从Fragment内托管的FragmentPagerAdapter更改标题,并在主Activity内这样初始化:

private void setupViewPager(ViewPager viewPager){

    SectionsStatePagerAdapter adapter = new SectionsStatePagerAdapter(getSupportFragmentManager());

    adapter.addFragment(new Fragment1(), "Test fragment 1");
    adapter.addFragment(new Fragment2(), "Test fragment 2");

    viewPager.setOffscreenPageLimit(0);
    viewPager.setAdapter(adapter);

    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }
        @Override
        public void onPageSelected(int position) {
            if(getSupportActionBar() != null) {
                getSupportActionBar().setTitle("Fragment " + position);
            }
        }
        @Override
        public void onPageScrollStateChanged(int state) { }
    });
}

我看到setTitle()中的onPageSelected被调用了,但标题在工具栏中没有变化。我还尝试过在Fragment的setUserVisibleHint方法中进行如下编辑:

((AppCompatActivity) getContext()).getSupportActionBar().setTitle("Fragment 1");

但是标题仍然与主活动onCreate中的标题相同。我究竟做错了什么?如何从片段更改工具栏标题?

1 个答案:

答案 0 :(得分:0)

在片段中,不接受getSupportActionBar。

代替

getActivity.getActionbar.setTitle("Name here");