单击按钮时,我想为我的query
数据创建一个Room
。我在observable
中输入的数据上有一个OnClickListener
。 observer
在OnClickListener
方法之外工作正常,但是在其中,owner参数不匹配。
Android Studio
要求android.arch.lifecycle.LifeCycleOwner
,但说得到android.view.View.OnClickListener
。
showAllButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
//The "this" parameter is underlined red
myViewModel.getAllDataVM().observe( this , new Observer<List<MyRoomEntity>>() {
@Override
public void onChanged(@Nullable List<MyRoomEntity> myRoomEntities) {
//myAdapter.setList( myRoomEntities );
Log.d("TAG", "OBSERVED");
if(myRoomEntities != null) {
for(MyRoomEntity item: myRoomEntities) {
Log.d("TAG ROOM ", "" + item.toString());
}
}
}
} );
}
} );//End Button
this
用红色下划线表示,它是owner
参数。我尝试使用context
,application
等,但没有任何效果。也许不可能在OnClickListener
中有观察者,但是我该怎么办?
答案 0 :(得分:1)
这是一个易于修复的常见错误。 this
关键字当前指的是View.OnClickListener
的参数之一不是的.observe()
。因此,要解决此问题,只需将this
替换为:
getApplicationContext()
MyActivity.this
您的代码应基本保持不变:
myViewModel.getAllDataVM().observe(getApplicationContext(), new Observer<List<MyRoomEntity>>() {
@Override
public void onChanged(@Nullable List<MyRoomEntity> myRoomEntities) {
//.....