несовместимые типы: MainActivity не может быть преобразовано в LifecycleOwner - PullRequest
0 голосов
/ 05 июля 2018

MainActivity не может быть преобразовано в LifecycleOwner Я использовал это как владелец LiveCycle, но он отклонен, и я получил ошибку, как вы видите на картинке. Я работаю на Api 25 и мне эта проблема может быть связана с этой версией Это информация о моем SDK

compileSdkVersion 25
buildToolsVersion '25.0.2'

Это мой код:

private void retrieveTasks() {
    Log.d(TAG, "Actively retrieving the tasks from the DataBase");
    // Extract all this logic outside the Executor and remove the Executor
    // Fix compile issue by wrapping the return type with LiveData
    LiveData<List<TaskEntry>> tasks = mDb.taskDao().loadAllTasks();
    // Observe tasks and move the logic from runOnUiThread to onChanged
    tasks.observe(this, new Observer<List<TaskEntry>>() {
        @Override
        public void onChanged(@Nullable List<TaskEntry> taskEntries) {
            Log.d(TAG, "Receiving database update from LiveData");
            mAdapter.setTasks(taskEntries);
        }
    });
}

Я поместил зависимости LiveData в свой Gradle

compile "android.arch.lifecycle:extensions:1.0.0"
annotationProcessor "android.arch.lifecycle:compiler:1.0.0"

Если кто-то знает причину проблемы, дайте мне знать, пожалуйста

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Хороший вопрос

Фрагменты и действия в библиотеке поддержки 26.1.0 и более поздних версиях уже реализуют интерфейс LifecycleOwner по умолчанию

но в версии 25 вам нужно реализовать интерфейс LifecycleOwner например

public class MyActivity extends Activity implements LifecycleOwner {
    private LifecycleRegistry mLifecycleRegistry;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mLifecycleRegistry = new LifecycleRegistry(this);
        mLifecycleRegistry.markState(Lifecycle.State.CREATED);
    }

    @Override
    public void onStart() {
        super.onStart();
        mLifecycleRegistry.markState(Lifecycle.State.STARTED);
    }

    @NonNull
    @Override
    public Lifecycle getLifecycle() {
        return mLifecycleRegistry;
    }
}

Источник: Обработка жизненных циклов с компонентами, учитывающими жизненный цикл

0 голосов
/ 05 июля 2018

Как вы можете прочитать здесь LifecycleOwner было добавлено в библиотеку поддержки 26.1.0. Самый простой способ решить вашу проблему - обновить версию библиотеки поддержки.

...