Skocz do zawartości
matej1410

Interfejs Parcelable, wysyłanie i odbieranie obiektu, "krzaki" w logcat

    Rekomendowane odpowiedzi

    Witam.

    Borykam się z takim oto problemem:

    logcat.jpg.86018a18cd05bdaada45f8c858061e62.jpg

    Próbuje wysłać w intencie obiekt mojej klasy i coś takiego dostaję gdy chce się dostać do pola typu String wysłanego obiektu.

     

    To moja klasa:

    package com.example.cwiczeniarecyclerview;
    
    import android.os.Parcel;
    import android.os.Parcelable;
    
    public class Motocykle  implements Parcelable {
    
        String nazwa;
        String ocena;
        int vmax;
        int cc;
    
        public String getNazwa() {
            return nazwa;
        }
    
        public String getOcena() {
            return ocena;
        }
    
        public int getVmax() {
            return vmax;
        }
    
        public int getCc() {
            return cc;
        }
    
    
        public Motocykle(String nazwa, String ocena, int vmax, int cc)
        {
            this.nazwa = nazwa;
            this.ocena = ocena;
            this.vmax = vmax;
            this.cc = cc;
        }
    
        protected Motocykle(Parcel in) {
            nazwa = in.readString();
            ocena = in.readString();
            vmax = in.readInt();
            cc = in.readInt();
        }
    
        public static final Creator<Motocykle> CREATOR = new Creator<Motocykle>() {
            @Override
            public Motocykle createFromParcel(Parcel in) {
                return new Motocykle(in);
            }
    
            @Override
            public Motocykle[] newArray(int size) {
                return new Motocykle[size];
            }
        };
    
        @Override
        public int describeContents()
        {
            return 0;
        }
    
        @Override
        public void writeToParcel(Parcel parcel, int i)
        {
        parcel.writeInt(cc);
        parcel.writeInt(vmax);
        parcel.writeString(nazwa);
        parcel.writeString(ocena);
        }
    }

    To MainActivity:

    public class MainActivity extends AppCompatActivity {
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
        Motocykle daneDoWyslania = new Motocykle("s","s",8,2);
        Intent i = new Intent(MainActivity.this,KlasaOdbierajaca.class);
        i.putExtra("mojklucz",daneDoWyslania);
        startActivity(i);
        }
    }

    A to klasa w której chcę odebrać obiekt i odwołać się do jednego z pól:

    
    public class KlasaOdbierajaca extends AppCompatActivity {
    
    
        TextView textView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_klasa_odbierajaca);
    
            Intent intent = getIntent();
            Motocykle mojMotor = intent.getParcelableExtra("mojklucz");
            String string1 = mojMotor.getNazwa();
            Log.d("mojlog",string1);
        }
    }

     

    dodana zawartość

    Problem rozwiązany. Należy zawsze podawać w takiej samej kolejności pola w metodach:

    writeToPracel(Parcel parcel int i)

    oraz Motocykle(Parcel in)

    czyli misi być tak:

    
        protected Motocykle(Parcel in) {
            nazwa = in.readString();
            ocena = in.readString();
            vmax = in.readInt();
            cc = in.readInt();
        }
    
      
        @Override
        public void writeToParcel(Parcel parcel, int i)
        {
            parcel.writeString(nazwa);
            parcel.writeString(ocena);
            parcel.writeInt(vmax);
            parcel.writeInt(cc);
        }

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x