2017-07-19 8 views
0

私は以下のクラスを作成し、このクラスのオブジェクトを使用しました。私はこのクラスのリストを渡し、それを次のアクティビティに送りたいと思います。私のMainActivityで アンドロイドのある活動から別の活動にオブジェクトのリストを送るには?

class contact implements Comparable<contact>, Parcelable { 
    String name; 
    private String phone; 
    private Bitmap image; 

    contact(String n, String p, Bitmap pic) { 
     super(); 
     name = n; 
     phone = p; 
     image = pic; 
    } 

    public contact(Parcel in) { 
     String[] data = new String[3]; 
     in.readStringArray(data); 
     this.name=data[0]; 
     this.phone=data[1]; 
     byte [] encodeByte= Base64.decode(data[2],Base64.DEFAULT); 
     this.image = BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length); 
    } 

    public void setImage(Bitmap image) { 
     this.image = image; 
    } 

    Bitmap getImage() { 
     return image; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    String getName() { 
     return name; 
    } 

    public void setPhone(String phone) { 
     this.phone = phone; 
    } 

    String getPhone() { 
     return phone; 
    } 

    static Comparator<contact> ContactNameComparator 
     = new Comparator<contact>() { 
      public int compare(contact c1, contact c2) { 
       String name1 = c1.getName().toUpperCase(); 
       String name2 = c2.getName().toUpperCase(); 

       return name1.compareTo(name2); 
      } 
    }; 

    @Override 
    public int compareTo(@NonNull contact o) { 
     return 0; 
    } 

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

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeStringArray(new String[]{this.getName(),this.getPhone(),String.valueOf(getImage())}); 
    } 
    public static final Creator<contact> CREATOR = new Creator<contact>(){ 

     @Override 
     public contact createFromParcel(Parcel in) { 
      return new contact(in); 
     } 

     @Override 
     public contact[] newArray(int size) { 
      return new contact[size]; 
     } 
    }; 
} 

は、私がリスト

List<contact> c=new ArrayList<>(); 

を作成しています。このリストのいくつかのオブジェクトを追加した後、私はputExtra()しかし次のアクティビティに送信しようとしていますが、取得していますエラー。私はこのようなリストを渡すようにしようとしています 、

Intent intent=new Intent(getApplicationContext(),NextActivity.class); 
     intent.putExtra("VAR1", (Parcelable) c); 
     startActivity(intent); 

そして、私のNextActivity.classで

は、私は次のエラーを取得していますアプリケーションを実行する際

Bundle bundle = getIntent().getExtras(); 
    c = bundle.getParcelableArrayList("VAR1"); 

、このようにそれを受けています:

java.lang.ClassCastException: java.util.ArrayList cannot be cast to android.os.Parcelable 

この問題をどのように解決すればよいですか?

答えて

1

コードputParcelableArrayList( "VAR1"、ArrayListの)を行う場合、このエラーが発生すると呼ばれる活動

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 

    Bundle bundle = getIntent().getExtras(); 
    ArrayList<contact> arraylist = bundle.getParcelableArrayList("VAR1"); 
} 
+0

Intent intent=new Intent(getApplicationContext(),NextActivity.class); Bundle bundle = new Bundle(); bundle.putParcelableArrayList("VAR1", arraylist); intent.putExtras(bundle); this.startActivity(intent); 

活動

の呼び出しからこの

コードを試してみてください: エラー:(291、51)エラー:互換性のない型:リストはArrayList <?に変換できません。 Parcelable> –

+0

私はあなたのコードをputParcelableArrayList( "VAR1"、arraylist)で試してみました – akhilesh0707

+0

はい、申し訳ありません、私は自分のプロジェクトでタイプミスをしました。ありがとうございました。 –

関連する問題