在onCreate()中设置工具栏标题不起作用

时间:2017-07-08 18:03:32

标签: android toolbar android-appcompat

我在设置工具栏的标题时出现问题,只有在出现延迟时才会起作用。

例如,我的应用程序'预测'

的简单oncreate()方法
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    setSupportActionBar(_toolbar);
    setTitle("ABCDEFG");
}

运行该应用时,工具栏的名称为我的应用,而不是' ABCDEFG'。

但是,如果我在设置标题之前放置了200毫秒的延迟..

    Observable.just("ABCDEFG")
            .delay(200,TimeUnit.MILLISECONDS)
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(this::setTitle);

我的工具栏标题正确显示为" ABCDEFG"

在使用工具栏进行任何操作时都是一样的,有谁知道这里到底发生了什么?以及如何解决这个问题而不必拖延?

这是我的工具栏xml ..

<android.support.design.widget.AppBarLayout
    android:id="@+id/appBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fitsSystemWindows="true"
    android:theme="@style/AppTheme.AppBarOverlay">


    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/actionBarSize"
        app:layout_collapseMode="pin"
        app:layout_scrollFlags="scroll"
        app:popupTheme="@style/AppTheme.PopupOverlay" />


</android.support.design.widget.AppBarLayout>

感谢您的帮助!

编辑忘了提及setTitle()只是调用_toolbar.setTitle(title)

2 个答案:

答案 0 :(得分:2)

如果您致电setSupportActionBar(Toolbar),则操作栏负责处理标题,因此您需要致电getSupportActionBar().setTitle("My Title");设置自定义标题。

另请查看此toolbar.setTitle("My title");可能导致问题的链接,如下所示: - In android app Toolbar.setTitle method has no effect – application name is shown as title

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

我们可以将多个工具栏作为布局窗口小部件,但不会执行操作。

因此,更好的方法是使用getSupportActionBar().setTitle("My Title");

答案 1 :(得分:0)

正如maRShmallow所说,我将_toolbar.setTitle()更改为getSupportActionBar()。setTitle()