Parceler:无法在 Android ViewModel 中找到类型为 MutableLiveData<User> 的 read/write 生成器
Parceler: Unable to find read/write generator for type MutableLiveData<User> in Android ViewModel
当我将 MutableLiveData 对象添加到我的 Android Studio 项目中的视图模型时,我遇到了编译生成错误。我还没有在任何地方调用 getUser() 或 setUser() 并且我将完全相同的对象添加到我的项目中的不同视图模型并且没有收到错误,所以我不确定问题是什么。
错误:
error: Parceler: Unable to find read/write generator for type androidx.lifecycle.MutableLiveData<com.example.demometvtest1.User> for com.example.demometvtest1.RegisterViewModel.user
RegisterViewModel.java:
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
@Parcel
public class RegisterViewModel extends ViewModel {
public MutableLiveData<User> user = new MutableLiveData<>();
public void setUser(String user) {
return user;
}
public MutableLiveData<User> getUser() {
this.user.setValue(user);
}
}
问题出在注释 @Parcel
上:您正在尝试 automatic 生成 writeToParcel()
& createFromParcel()
,但注释处理器没有找到 read/write MutabileLiveData 的实现(它不可打包)。
删除注释,使 class 实现 parcelable 接口,并在需要时自己实现 parcelable 方法 writeToParcel()
& createFromParcel()
或者简单地删除注释。
当我将 MutableLiveData 对象添加到我的 Android Studio 项目中的视图模型时,我遇到了编译生成错误。我还没有在任何地方调用 getUser() 或 setUser() 并且我将完全相同的对象添加到我的项目中的不同视图模型并且没有收到错误,所以我不确定问题是什么。
错误:
error: Parceler: Unable to find read/write generator for type androidx.lifecycle.MutableLiveData<com.example.demometvtest1.User> for com.example.demometvtest1.RegisterViewModel.user
RegisterViewModel.java:
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
@Parcel
public class RegisterViewModel extends ViewModel {
public MutableLiveData<User> user = new MutableLiveData<>();
public void setUser(String user) {
return user;
}
public MutableLiveData<User> getUser() {
this.user.setValue(user);
}
}
问题出在注释 @Parcel
上:您正在尝试 automatic 生成 writeToParcel()
& createFromParcel()
,但注释处理器没有找到 read/write MutabileLiveData 的实现(它不可打包)。
删除注释,使 class 实现 parcelable 接口,并在需要时自己实现 parcelable 方法 writeToParcel()
& createFromParcel()
或者简单地删除注释。