2016-05-28 9 views
0

私は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です。

+1

私はこれを理解しました。 Movie.javaでは、Parcelableオブジェクトのデータメンバーの場合、検索順序は、入力した順序と同じにする必要があります。 –

+0

FRAGMENTからFRAGMENTまでのデータを渡しますか? –

+0

リンクを参照してください:http://stackoverflow.com/questions/16036572/how-to-pass-values-between-fragments –

答えて

0

解決策は、読み込み/書き込みメソッドを変更して、すべてのオブジェクトメンバを同じ順序で読み書きすることでした。

よろしくお願いいたします。

+0

あなたの投稿は答えではないので、これを削除してコメントを使用してください。理由は分かりません。 –

+0

私はこのユーザーと同じ問題を抱えていましたが、これを使って問題。だから、私にとってはユーザーの問題に対する答えです – tiagocarvalho92

関連する問題