2016-01-24 2 views
1

Когда я пытаюсь отправить объект в другой Activity, он показывает эту ошибку:объект СОЗДАТЕЛЬ быть статическим на классе com.example.android.movieapp.Movie

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); 
      } 
     }); 
    } 

и DetailClass:

Movie movie; 
    Bundle extras = getIntent().getExtras(); 

     movie = extras.getParcelable("send"); 
     title.setText(movie.title); 
+1

Публичный статический окончательный Parcelable.Creator CREATOR = ... – Onik

+0

Теперь он работает. Благодаря –

ответ

1

за исключением состояния:

...the CREATOR object to be static on class com.example.android.movieapp.Movie

Кроме того, из документации Parcelable:

Classes implementing the Parcelable interface must also have a non-null static field called CREATOR of a type that implements the Parcelable.Creator interface.

CREATOR должен быть статическим:

public static final Parcelable.Creator<Movie> CREATOR = 

 Смежные вопросы

  • Нет связанных вопросов^_^