Witam. Mam problem z przekazaniem zmiennej pomiędzy panelami. Próbowałem używając “bundle i intent” ale za każdym razem wywala mnie po kompilacji. Macie jakieś pomysły?
Więcej konkretów - jakiej zmiennej (typ) i najlepiej fragment, w którym próbujesz przekazać ją przez Intent.
Wysylanie odbywa sie z Activity, ktore odbywa sie po kliknieciu buttona w Activity 1. Przekazuje stringa
Wysylanie:
String przekaz;
przekaz=edT.getText().toString();
Intent cel = new Intent(context, MainActivity.class);
cel.putExtra("dane",przekaz);
startActivity(cel);
Odbieranie
Intent i = getIntent();
Bundle przekazanedane = i.getExtras();
String przekazanytekst = przekazanedane.getString("dane");
Coś takiego
Jeżeli dobrze rozumiem, program chcesz zacząć od MainActivity, przejść do Activity1 i razem z wartością wrócić do MainActivity. W takim wypadku program będzie się wywalał przy starcie. Potrzebna ci taka sztuczka:
if (i.hasExtra("dane")) {
Bundle przekazanedane = i.getExtras();
String przekazanytekst = przekazanedane.getString("dane");
}
Kiedy wywołujesz MainActivity z Activity1, wszystko jest ok. Ale kiedy robi to system, wartości, na której próbujesz działać, jeszcze po prostu tam nie ma.
Powinieneś też zadbać o porządne nazewnictwo zmiennych. camelCase, zastąpienie jednoliterowców, a jeżeli myślisz o programowaniu na poważnie, używanie angielskiego nazewnictwa.
No tak. Faktycznie aczkolwiek problem nadal występuje, z tym że teraz występuje już po stronie 2 Activity, czyli w momencie wduszenia przycisku, który uruchamia wysłanie. Brak pomysłu
Błąd będzie wyskakiwał, jeżeli zmienne przekaz albo context będą miały wartość null.
Dobra działa. Coś namieszałem w sumie sam nie wiem co, ale działa dzięki za pomoc, chociaż podejrzewam, że będzie jeszcze potrzebna