如何在 activity 对 ViewModel 的 LiveData object 的观察调用中为 ActionBar 执行 setTitle()?

How to execute setTitle() for an ActionBar in an activity's observe call for a ViewModel's LiveData object?

在 activity 文件中,当我在视图模型的 LiveData 值的实例化观察者界面中编写 getSupportActionBar().setTitle(...) 时,操作栏的标题不会随着可观察对象的更新而改变.

我的 activity 文件中 onCreate 方法中的工具栏设置:

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

mViewModel.getValue().observe(this, mValue -> getSupportActionBar().setTitle(mValue));

我的视图模型中mValue的字段定义和getter代码:

protected MutableLiveData<String> mValue = new MutableLiveData();
public LiveData<String> getValue() {
    return mValue;
}

澄清一下,observable 的值(例如 mValue)正按预期传递给 activity 文件中的 lambda 观察器。并且 setSupportActionBar().setTitle() 在正常调用时按预期工作,即在 lambda 观察器之外,也按预期工作。

我找到了 solution (thanks to user1506104) 来更改工具栏的标题,但没有使用 getSupportActionBar().setTitle()

CollapsingToolbarLayout toolbarLayout = findViewById(R.id.toolbar_layout);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

mViewModel.getValue().observe(this, mValue -> {
    toolbarLayout.setTitle(mValue);
});

其中 R.id.toolbar_layout 是 parents R.id.toolbar 在 activity 各自布局资源中的 CollapsingToolbarLayout

我不知道为什么不幸的是它起作用了。