требуется: 'android.arch.lifecycle.LifecycleOwner ошибка - PullRequest
0 голосов
/ 29 ноября 2018

Я хочу создать служебный класс, который будет управлять моей базой данных Room.Используя оперативные данные, я могу наблюдать за изменениями в своей базе данных, однако я могу только поместить этого наблюдателя в свой класс Activity.Я хочу подтвердить, что это действительно так.Я попытался использовать контекст и активность в качестве периметра.

Я также добавил следующую библиотеку в 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

                    }
                });

    }

Это прекрасно работает в Activity, но перемещено в класс, который не расширяет Activity. Я получаю сообщение об ошибке:

Неправильный 1-й аргумент.Найдено .... требуется: 'android.arch.lifecycle.LifecycleOwner error

1 Ответ

0 голосов
/ 30 ноября 2018

Это потому, что LiveData.observe принимает LifecycleOwner в качестве первого аргумента, а не Context, и действие также является LifecycleOwner:

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

Так что вывероятно, хотите передать LifecycleOwner вместо Context вашему DatabaseUtil.Или вы можете использовать LiveData.observeForever , если вам не важен жизненный цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...