Android (java) objektum átadás fragmentek között?
ü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.
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.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!