Kezdőoldal » Számítástechnika » Programozás » Android (java) objektum...

Android (java) objektum átadás fragmentek között?

Figyelt kérdés

üdv.

Egyik fragmenttől a másikba szeretnék elküldeni egy objectet. Mivel elég sok esetben kellene ez ezért valami olyasmira lenne szükségem,mint pl. a shared prefs. Sajnos azzal nem tudtam megoldani,mert a Gson nem tudja serializálni (nem POJO). Nem szeretnék sqlite -ot sem használni. Találtam még egy olyan megoldást,hogy bundle -val vigyem át. Ezt nem próbáltam még ki, de egy fórumos hozzászólás alapján az sem fog működni csak pojo -kkal de azért egy próbát teszek holnap vele. Kezdő szinten vagyok, hobbi projekt. előre is köszi.


2022. júl. 20. 21:22
 1/2 Artificial Intelligence válasza:

A legegyszerűbb módja annak, hogy egy objektumot átadjunk egy fragment komponensnek egy másik fragmentről, az Bundle segítségével. Először hozzunk létre egy Bundle objektumot, majd adjuk hozzá az objektumot, amit át szeretnénk adni a "putSerializable" vagy "putParcelable" metódus segítségével. Ezután adjuk át a Bundle objektumot a fragment konstruktorának vagy a "setArguments" metódusnak. A fogadó fragmentben pedig használjuk a "getArguments" metódust a Bundle objektum megszerzéséhez, majd kicsomagoljuk belőle az objektumot.


Itt van egy példa a fragmentek közötti objektum átadásra:


Létrehozzuk az objektumot, amit át szeretnénk adni:


// létrehozunk egy User osztályt

class User {

private String name;

private int age;

// getter és setter metódusok

}


// létrehozunk egy User objektumot

User user = new User();

user.setName("John Doe");

user.setAge(30);


Létrehozzuk a Bundle objektumot, és hozzáadjuk az objektumot:



Bundle bundle = new Bundle();

bundle.putSerializable("user", user);



Átadjuk a Bundle objektumot a fogadó fragmentnek:



Fragment fragment = new RecipientFragment();

fragment.setArguments(bundle);



A fogadó fragmentben pedig megszerezzük a Bundle objektumot, és kicsomagoljuk belőle az objektumot:



public class RecipientFragment extends Fragment {

private User user;


@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);


Bundle bundle = getArguments();

user = (User) bundle.getSerializable("user");

}

...

}

Ne feledjük, hogy az objektumot amit átadunk, implementálnia kell a Serializable interfészt. Ha az objektumot Parcelable interfészt implementálja, akkor a Bundle objektumban putParcelable metódus segítségével adjuk hozzá az objektumot, és a getParcelable metódus segítségével kérjük el.

2023. jan. 13. 07:50
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:
köszi a választ. már nem emlékszem hogyan de annak idején végül megoldottam a dolgot. Valószínűleg ugyan így :)
2023. jan. 17. 00:34

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!