Java 如何为活动中的ActionBar执行setTitle();s观察调用ViewModel';什么是LiveData对象?
在活动文件中,当我在视图模型的Java 如何为活动中的ActionBar执行setTitle();s观察调用ViewModel';什么是LiveData对象?,java,android,androidx,Java,Android,Androidx,在活动文件中,当我在视图模型的LiveData值的实例化观察者界面中写入getSupportActionBar().setTitle(…)时,操作栏的标题不会随观察者的更新而更改 我的活动文件中的onCreate方法内的工具栏设置: Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); mViewModel.getValue().observe(this, mValue -> getSupp
LiveData
值的实例化观察者界面中写入getSupportActionBar().setTitle(…)
时,操作栏的标题不会随观察者的更新而更改
我的活动文件中的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();
protected MutableLiveData mValue=new MutableLiveData();
public LiveData getValue(){
返回mValue;
}
为了澄清,可观察值(例如,mValue
)正在按预期传递给活动文件中的lambda观察者。和setSupportActionBar().setTitle()
在正常调用(即在lambda观察器之外)时也能正常工作。我找到了一个(感谢)更改工具栏标题的方法,它没有使用getSupportActionBar().setTitle()
其中R.id.toolbar\u布局
是活动相应布局资源中父级R.id.toolbar
的折叠工具栏布局
不幸的是,我不知道它为什么起作用
public LiveData<String> getValue() {
return mValue;
}
CollapsingToolbarLayout toolbarLayout = findViewById(R.id.toolbar_layout);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mViewModel.getValue().observe(this, mValue -> {
toolbarLayout.setTitle(mValue);
});