如何在 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
。
我不知道为什么不幸的是它起作用了。
在 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
。
我不知道为什么不幸的是它起作用了。