Android setTitle()在不同时间的行为不同

Android setTitle()在不同时间的行为不同,android,android-support-library,android-toolbar,android-appcompat,Android,Android Support Library,Android Toolbar,Android Appcompat,我正在扩展AppCompatActivity并使用setSupportActionBar()设置ActionBar 标题的设置有点混乱 如果我这样做- Toolbar toolbar = (Toolbar) findViewById(R.id.titlebar); setSupportActionBar(toolbar); toolbar.setTitle("Title 1"); // Does not work setTitle("Title 2"); // Works getSupportA

我正在扩展
AppCompatActivity
并使用
setSupportActionBar()
设置
ActionBar

标题的设置有点混乱

如果我这样做-

Toolbar toolbar = (Toolbar) findViewById(R.id.titlebar);
setSupportActionBar(toolbar);
toolbar.setTitle("Title 1"); // Does not work
setTitle("Title 2"); // Works
getSupportActionBar().setTitle("Title 3"); // Works
setTitle("Title 4"); // Does not work. Why?
我看到的是
getSupportActionBar().setTitle()
正在为标题创建一个新视图,然后活动将丢失对它的引用。
这是Android的预期行为还是一个bug

如果调用
setSupportActionBar(工具栏),
则操作栏负责处理标题,因此需要调用
getSupportActionBar().setTitle(“我的标题”)
设置自定义标题

还可以检查这个链接,其中
toolbar.setTitle(“我的标题”)可能会导致如下问题:-在android应用程序
工具栏中。setTitle
方法无效-应用程序名称显示为title

工具栏
是操作栏的一般形式

我们可以有多个工具栏作为布局小部件,但操作不是

因此,更好的方法是使用
getSupportActionBar().setTitle(“我的标题”)

复制此行

setSupportActionBar(toolbar);
把你的行尾加上

Toolbar toolbar = (Toolbar) findViewById(R.id.titlebar);    
setSupportActionBar(toolbar);
toolbar.setTitle("Title 1");
setTitle("Title 2");
getSupportActionBar().setTitle("Title 3");
setTitle("Title 4");
setSupportActionBar(toolbar);

一旦你设置了
setSupportActionBar(工具栏)
,这就是你想要的行为。支持库内部为显示标题创建新视图

setTitle()
活动的方法
如果使用
setActionBar(工具栏)
,它将只更新标题。但是,它没有向后兼容性

参考号


我理解这一点。但是,如果第4行可以工作,那么第6行也应该可以工作;在这种情况下不起作用..然后我们在第4行得到一个NPE)您可以使用setSupportActionBar();两次。一个在第4行之前,一个在末尾。