gpt4 book ai didi

java - Android Parcelable Class - 内部类不能有静态声明

转载 作者:行者123 更新时间:2023-12-01 18:15:47 26 4
gpt4 key购买 nike

我一直在尝试创建一个 Android Parcelable 对象,但一直遇到错误“内部类不能有静态声明”。作为引用,我一直在查看位于 here 的官方 Android 教程。 .

我当前的代码如下:

public class AppDetail implements Parcelable {
CharSequence label;
CharSequence name;
Drawable icon;

@Override
public int describeContents() {
return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeArray(new Object[] { this.label, this.name, this.icon });
}

public static final Parcelable.Creator<AppDetail> CREATOR
= new Parcelable.Creator<AppDetail>() {
public AppDetail createFromParcel(Parcel in) {
return new AppDetail(in);
}

public AppDetail[] newArray(int size) {
return new AppDetail[size];
}
};

public AppDetail() {}

public AppDetail(Parcel in) {
Object[] data = in.readArray(AppDetail.class.getClassLoader());

this.label = (String)data[0];
this.name = (String)data[1];
this.icon = (Drawable)data[2];
}
}

我在网上发现其他人遇到了类似的问题,并得出结论编译器不喜欢静态初始化 block (而不是静态类本身) - 我尝试遵循此建议并声明如下: public static Parcelable.Creator<AppDetail> CREATOR并在其他地方初始化 - 但是我遇到了同样的错误。

我怎样才能得到这个/一些可以编译的东西?

最佳答案

Yes it is- should that matter?

是的,因为这就是您收到错误的原因。您的错误不是由于 Parcelable.Creator<AppDetail> ,但由于 AppDetail本身。你不能有static方法或数据成员,例如 CREATOR ,在内部类上。

这样做的最终效果是类直接实现 Parcelable需要是 static内部类(即 public static class AppDetail implements Parcelable )或常规(非内部)Java 类。

基于此实现,只需制作 AppDetailpublic static class应该可以解决你的问题。

关于java - Android Parcelable Class - 内部类不能有静态声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29687301/

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