当我尝试将一个对象发送到另一个
Activity
时,它显示此错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.movieapp/com.example.android.movieapp.DetailActivity}: android.os.BadParcelableException: Parcelable protocol requires the CREATOR object to be static on class com.example.android.movieapp.Movie
这是我的代码:
public class Movie implements Parcelable{
String title;
String image;
public Movie (String title, String image){
this.title = title;
this.image = image;
}
public Movie(JSONObject movie) throws JSONException {
this.title = movie.getString("original_title");
this.image = movie.getString("poster_path");
}
private Movie (Parcel in){
title = in.readString();
image = in.readString();
}
public final Parcelable.Creator<Movie> CREATOR = new Parcelable.Creator<Movie>(){
@Override
public Movie createFromParcel(Parcel parcel) {
return new Movie(parcel);
}
@Override
public Movie[] newArray(int i) {
return new Movie[i];
}
};
@Override
public String toString() {
return title + "--" + image;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(title);
dest.writeString(image);
}
public String getImage() {
return image;
}
public String getTitle() {
return title;
}
}
主要课程:
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Movie movie = movieAdapter.getItem(position);
Intent intent = new Intent(getApplication(), DetailActivity.class);
intent.putExtra("send", movie);
startActivity(intent);
}
});
}
和详细类:
Movie movie;
Bundle extras = getIntent().getExtras();
movie = extras.getParcelable("send");
title.setText(movie.title);
例外情况:
...CREATOR 对象在类 com.example.android.movieapp.Movie 上是静态的
此外,来自 Parcelable 文档:
实现 Parcelable 接口的类还必须具有一个名为 CREATOR 的非空静态字段,其类型实现 Parcelable.Creator 接口。
CREATOR
必须是静态的:
public static final Parcelable.Creator<Movie> CREATOR =