[Android] Przekazywanie danych między Activity


(Ixvokter) #1

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?


(Frankfurterium) #2

Więcej konkretów - jakiej zmiennej (typ) i najlepiej fragment, w którym próbujesz przekazać ją przez Intent.


(Ixvokter) #3

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


(Frankfurterium) #4

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.


(Ixvokter) #5

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


(Frankfurterium) #6

Błąd będzie wyskakiwał, jeżeli zmienne przekaz albo context będą miały wartość null.


(Ixvokter) #7

Dobra działa. Coś namieszałem w sumie sam nie wiem co, ale działa :smiley: dzięki za pomoc, chociaż podejrzewam, że będzie jeszcze potrzebna :slight_smile: