为了账号安全,请及时绑定邮箱和手机立即绑定

放入 onClickListener 时,实时数据观察器中的 owner 参数是什么?

放入 onClickListener 时,实时数据观察器中的 owner 参数是什么?

德玛西亚99 2022-05-25 09:44:47
单击按钮时,我想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) {

         //.....


查看完整回答
反对 回复 2022-05-25
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号