Java 不兼容的类型:MainActivity无法转换为LifecycleOwner
我用它作为LiveCycle的所有者,但是它被拒绝了,我得到了一个错误,正如你在图片中看到的。 我从事Api 25的工作,我认为问题可能与此版本有关 这是关于我的sdk的信息Java 不兼容的类型:MainActivity无法转换为LifecycleOwner,java,android,android-gradle-plugin,android-room,android-livedata,Java,Android,Android Gradle Plugin,Android Room,Android Livedata,我用它作为LiveCycle的所有者,但是它被拒绝了,我得到了一个错误,正如你在图片中看到的。 我从事Api 25的工作,我认为问题可能与此版本有关 这是关于我的sdk的信息 compileSdkVersion 25 buildToolsVersion '25.0.2' 这是我的代码: private void retrieveTasks() { Log.d(TAG, "Actively retrieving the tasks from the DataBase"); //
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);
}
});
}
如果有人知道问题的原因,请告诉我,因为您可以阅读生命周期所有者已添加到支持库26.1.0
。解决问题的最简单方法是升级支持库版本。好问题
默认情况下,Support Library 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;
}
}
来源:也有同样的错误。升级到androidx支持库修复了该问题。
在Android Studio内部选择:重构->迁移到Android x您的MainActivity扩展了什么?MainActivity扩展AppCompatActivity实现了TaskAdapter.ItemClickListener我的计算机中没有空间升级我的支持库版本,所以我需要以前的版本。
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;
}
}