setTitle()在不同时间表现不同
我正在延伸AppCompatActivity
并使用setSupportActionBar()
设置ActionBar
。setTitle()在不同时间表现不同
设置标题有点混乱。
如果我这样做 -
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的预期行为还是错误?
如果您致电setSupportActionBar(Toolbar),
,则操作栏将负责处理标题,因此您需要拨打getSupportActionBar().setTitle("My Title");
来设置自定义标题。
还检查该链接,其中toolbar.setTitle("My title");
可能导致像下面的问题: - 在Android应用Toolbar.setTitle
方法没有效果 - 应用程序名称被显示为标题
而且toolbar
是操作栏的一般形式。
我们可以将多个工具栏作为布局窗口小部件,但操作不是。
因此更好的办法是使用getSupportActionBar().setTitle("My Title");
复制此行
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);
然后我们在#4行得到一个NPE? ;) – reVerse
你可以使用setSupportActionBar();两次。一行在行#4之前,一行在结尾。 –
这一次您所设定的setSupportActionBar(Toolbar)
预期的行为。支持库内部为显示标题创建新视图。
setTitle()
是方法Activity
它只会更新只有标题如果使用setActionBar(Toolbar)
。但是,它没有后向兼容性。
参考
我明白这一点。但是,如果第4行有效,那么第6行也应该起作用。 – Enigma
@Enigma更新了答案,请检查它 –
还要检查这个环节??? –
你的回答没有说服我为什么toolbar.setTitle();在这种情况下不工作.. –