Tell me, please, why is the contact object not transmitted?

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.ContactsViewHolder> { private ArrayList<Contact> contact; private Context context; private int position; public RVAdapter(ArrayList<Contact> contact, Context context) { this.contact = contact; this.context = context; } public ContactsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_card, parent, false); return new ContactsViewHolder(view); } public void onBindViewHolder(ContactsViewHolder holder, int position) { this.position = position; final Contact person = contact.get(position); holder.setRecord(person); holder.textName.setText(person.getName()); holder.textPhone.setText(person.getPhone()); holder.textBirhday.setText(person.getBirthday()); holder.cv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(view.getContext(), Info.class); intent.putExtra("IDsent", person.getId()); intent.putExtra("person",person); Log.d("Отправил", String.valueOf(person)); view.getContext().startActivity(intent); } }); } @Override public int getItemCount() { return contact.size(); } class ContactsViewHolder extends RecyclerView.ViewHolder { TextView textName, textPhone, textBirhday; CardView cv; Contact contact; public ContactsViewHolder(View itemView) { super(itemView); textName = itemView.findViewById(R.id.card_name); textPhone = itemView.findViewById(R.id.card_phone); textBirhday = itemView.findViewById(R.id.card_birthday); cv = itemView.findViewById(R.id.card_view); } public void setRecord(Contact contact) { this.contact = contact; } } 

}

 public class Info extends AppCompatActivity { public Button delite, change; EditText editName, editPhone, editDR; //public ArrayList<Contact> contact; Contact contact; int id; public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_info); initView(); //contact = getIntent().getParcelableArrayListExtra("person"); id = getIntent().getIntExtra("IDsent", id); contact = getIntent().getParcelableExtra("person"); //person IDsent Log.d("ПРИНЯЛ", String.valueOf(contact)); try{ delite.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ContactHelper ch = new ContactHelper(getApplicationContext()); String c = String.valueOf(contact); //ch.delete(contact.getId()); Log.d("ПРИНЯЛ", String.valueOf(id)); Intent intent = new Intent(Info.this, MainActivity.class); startActivity(intent); } }); }catch (Exception e){ Log.d("ERROR", e.getMessage()); } change.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ContactHelper ch = new ContactHelper(getApplicationContext()); Intent intent = new Intent(Info.this, MainActivity.class); startActivity(intent); } }); } void initView(){ delite = findViewById(R.id.delite_btn); change = findViewById(R.id.change); editName = findViewById(R.id.editName); editPhone = findViewById(R.id.editNumber); editDR = findViewById(R.id.editBirthday); } 

}

 public class Contact implements Parcelable { public int id; private String name; private String phone; private String birthday; public Contact(int id, String name, String phone, String birthday) { this.id = id; this.name = name; this.phone = phone; this.birthday = birthday; } protected Contact(Parcel in) { id = in.readInt(); name = in.readString(); phone = in.readString(); birthday = in.readString(); } public static final Parcelable.Creator<Contact> CREATOR = new Parcelable.Creator<Contact>() { @Override public Contact createFromParcel(Parcel in) { return new Contact(in); } @Override public Contact[] newArray(int size) { return new Contact[size]; } }; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } @Override public String toString() { return "Contact{" + "id=" + id + ", name='" + name + '\'' + ", phone='" + phone + '\'' + ", birthday='" + birthday + '\'' + '}'+"\n"; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { } 

}

This is what the log shows

  03-16 21:30:56.050 6687-6687/com.example.buroroll.homeworkdb D/Отправил: Contact{id=5, name='Имя контакта', phone='Телефон', birthday='Дата ДР'} 03-16 21:30:56.237 6687-6687/com.example.buroroll.homeworkdb D/ПРИНЯЛ: Contact{id=0, name='null', phone='null', birthday='null'} 
  • Class Contact then show. Probably Parcelable crookedly implemented. - Suvitruf
  • Added, it seems, really in this error - BuroRoll

1 answer 1

writeToParcel forgot to implement:

  @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.id); dest.writeString(this.name); dest.writeString(this.phone); dest.writeString(this.birthday); }