我有一个带有主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
中的标题相同。我究竟做错了什么?如何从片段更改工具栏标题?
答案 0 :(得分:0)
在片段中,不接受getSupportActionBar。
代替
getActivity.getActionbar.setTitle("Name here");