代码之家  ›  专栏  ›  技术社区  ›  portfoliobuilder

必需:'android.arch.lifecycle.lifecycleowner错误

  •  0
  • portfoliobuilder  · 技术社区  · 6 年前

    我想创建一个实用程序类来管理我的房间数据库。使用实时数据,我可以观察数据库中的变化,但是,我只能将这个观察者放在我的活动类中。我想确认事实确实如此。我试图同时使用上下文和活动作为边界。

    我还为Gradle添加了以下库

    implementation "android.arch.lifecycle:extensions:1.1.1"
    

    下面是一个如何使用观察者的示例

       public DatabaseUtils(AppDatabase db,  Context context) {
            db.testDao().getAllLiveList().observe(
                    context, new Observer<List<TestEntity>>() {
                        @Override
                        public void onChanged(@Nullable List<TestEntity> testEntities) {
                           // do work
    
                        }
                    });
    
        }
    

    这在活动中可以正常工作,但移动到不扩展活动的类中时,我收到错误:

    第一个参数错误。找到…必需:'android.arch.lifecycle.lifecycleOwner错误

    1 回复  |  直到 6 年前
        1
  •  3
  •   Aaron    6 年前

    那是因为 LiveData.observe LifecycleOwner 作为第一个论点而不是 Context ,活动也是 生命财产所有人 :

    public class SupportActivity extends Activity implements LifecycleOwner {
        // Your activity may be a subclass of this activity.
    }
    

    所以你可能想通过 生命财产所有人 而不是 语境 对你 DatabaseUtil . 或者你可以使用 LiveData.observeForever 如果你不关心生命周期。