gpt4 book ai didi

android - Activity 无法转换为 LifecycleOwner

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:04 27 4
gpt4 key购买 nike

我想将 Room 与 LiveData 一起使用,在其他项目中我已经使用过它,但在这个项目中,我无法让它工作。当我尝试观察实时数据时,它无法将我的 Activity 转换为生命周期 Activity ,但是,我正在使用 AppCompatActivity,我什至尝试覆盖 getLifecycle 方法(在以前的项目中对我有用)。我什至尝试使用 AndroidX,但仍然是同样的问题 :(

这是我的 Activity (部分):

import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleRegistry;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;

private LifecycleRegistry mLifecycleRegistry;

public class actMain extends AppCompatActivity {

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

mLifecycleRegistry = new LifecycleRegistry(this);
mLifecycleRegistry.markState(Lifecycle.State.CREATED);
}
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
//Firebase
db = FirebaseFirestore.getInstance();

mLifecycleRegistry.markState(Lifecycle.State.STARTED);

alarmViewModel = ViewModelProviders.of(this).get(AlarmViewModel.class);

alarmViewModel.getAlarmList().observe(actMain.class, new
Observer<List<Alarm>>() {
@Override
public void onChanged(@Nullable List<Alarm> alarms) {

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

这是我的 gradle 文件:

implementation 'androidx.room:room-runtime:2.0.0-alpha1'
annotationProcessor 'androidx.room:room-compiler:2.0.0-alpha1'
implementation 'com.google.android.material:material:1.0.0-alpha3'
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.0.0-alpha1'
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1'

这是我的道:

@Dao
public interface AlarmDao {

@Query("SELECT * FROM alarm")
LiveData<List<Alarm>> getAllAlarm();

@Insert
void insert(Alarm... alarms);

@Update
void update(Alarm... alarms);

@Delete
void delete(Alarm... alarms);

}

我尝试了这里的所有建议,包括我的建议,但我无法弄清楚这种情况下的问题是什么。

编辑:添加代码

最佳答案

你不需要使用

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

因为,新的 AppcompatActivity 已经是 lifecyclerOwner

您还观察到类对象,这是不正确的。 actMain.class 是一个类对象。你应该:

alarmViewModel.getAlarmList().observe(this, new Observer<List<Alarm>>() {
@Override
public void onChanged(@Nullable List<Alarm> alarms) {}
});

关于android - Activity 无法转换为 LifecycleOwner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50976622/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com