单击按钮时,我想query为我的Room数据创建一个。我有一个observable我放入的数据OnClickListener。在方法observer之外工作正常OnClickListener,但在方法内部,所有者参数不匹配。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 Buttonthis红色下划线为owner参数。我曾尝试使用context,application等,但没有任何效果。也许不可能在 内部有观察者OnClickListener,但那我该怎么办?
1 回答

MMMHUHU
TA贡献1834条经验 获得超8个赞
这是一个很容易修复的常见错误。this关键字当前指的是View.OnClickListener不是的参数之一.observe()。因此,要解决此问题,您只需替换this为:
getApplicationContext()
MyActivity.this
您的代码应该基本保持不变:
myViewModel.getAllDataVM().observe(getApplicationContext(), new Observer<List<MyRoomEntity>>() {
@Override
public void onChanged(@Nullable List<MyRoomEntity> myRoomEntities) {
//.....
添加回答
举报
0/150
提交
取消