私はUdacity(最終プロジェクトステージ1)でこのコースを行っています。私はPopular Moviesアプリケーションを作成する必要があります。 すべて正常ですが、現在私はDetailsActivityにMovieオブジェクトを渡すことができません。 MovieオブジェクトはParcelableです。getParcelable()はParcelableオブジェクトのヌルデータメンバーを持つオブジェクトを返します
public class Movie implements Parcelable{
int id;
String original_title;
String poster_path;
String overview;
String backdrop_path;
String vote_average;
String release_date;
public Movie(String _original_title, String _poster_path,
String _overview, String _backdrop_path,
String _vote_average, String _release_date, int _id){
this.original_title = _original_title;
this.id = _id;
this.overview = _overview;
this.poster_path = _poster_path;
this.backdrop_path = _backdrop_path;
this.vote_average = _vote_average;
this.release_date = _release_date;
}
protected Movie(Parcel in) {
id = in.readInt();
original_title = in.readString();
overview = in.readString();
poster_path = in.readString();
backdrop_path = in.readString();
vote_average = in.readString();
release_date = in.readString();
}
public static final Creator<Movie> CREATOR = new Creator<Movie>() {
@Override
public Movie createFromParcel(Parcel in) {
return new Movie(in);
}
@Override
public Movie[] newArray(int size) {
return new Movie[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(original_title);
dest.writeString(overview);
dest.writeString(poster_path);
dest.writeString(backdrop_path);
dest.writeString(vote_average);
dest.writeString(release_date);
dest.writeInt(id);
}
}
私は以下のコードを使用してアクティビティ間でデータを送受信しています。
MainActivityFragment.java
Movie mData = mMovieAdapter.getItem(position);
Log.d("Backdrop Path", mData.backdrop_path+""); // Backdrop Path : http://image.tmdb.org/t/p/w185/m5O3SZvQ6EgD5XXXLPIP1wLppeW.jpg
Bundle movieData = new Bundle();
movieData.putParcelable(KEY_DETAIL, mData);
Intent intent = new Intent(getActivity(), MovieDetailActivity.class);
intent.putExtras(movieData);
startActivity(intent);
MovieDetailActivityFragment.java
Bundle data = getActivity().getIntent().getExtras();
if(data != null)
movie = data.getParcelable(KEY_DETAIL); //Movie object
Log.d("Loading Image", movie.backdrop_path+""); // Loading Image : null
だから、ログごとに、私がバンドルされているムービーオブジェクトは、データを持っていることを確信しています。しかし、私が他のクラスのオブジェクトを取得するとき、オブジェクトはnullではありませんが、データメンバーはnullです。
私はこれを理解しました。 Movie.javaでは、Parcelableオブジェクトのデータメンバーの場合、検索順序は、入力した順序と同じにする必要があります。 –
FRAGMENTからFRAGMENTまでのデータを渡しますか? –
リンクを参照してください:http://stackoverflow.com/questions/16036572/how-to-pass-values-between-fragments –