Jak mogę wysłać dane z jednego działania (zamiaru) do innego?
Używam tego kodu do wysyłania danych:
Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
android
android-intent
Adham
źródło
źródło
user.getUserAccountId()+""
ponieważ spowodowałoby to powstanie niepotrzebnych obiektów będą zebrane. Rozważ użycieString.valueOf(user.getUserAccountId)
lubInteger.toString(user.getUserAccountId)
zamiast tego.Odpowiedzi:
Najpierw uzyskaj zamiar, który rozpoczął Twoją aktywność, stosując
getIntent()
metodę:Jeśli twoje dodatkowe dane są reprezentowane jako ciągi, możesz użyć
intent.getStringExtra(String name)
metody. W Twoim przypadku:źródło
getIntent().getStringExtra("id");
aby uzyskać ciąg identyfikatoragetIntent()
metodę. Zaktualizowałem odpowiedź.W działalności odbiorczej
źródło
getStringExtra?
null
, można pominąć pobieranie wszystkich dodatków. UżywającgetStringExtra
, zasadniczo zmieniasz go na serięif(extras != null) { return extras.getString(name) }
. Jeden za każdegetStringExtra
połączenie. Ta opcja sprawdzi sięnull
raz, a jeśli tak, to wcale nie będzie kłopotać się czytaniemBundle
. Poza tymgetStringExtra
prawdopodobnie zagetExtras
każdym razem będzie też pytał wewnętrznie. Masz więc po prostu więcej wywołań funkcji.źródło
Add-up
Ustaw dane
Otrzymać dane
źródło
Zamiast inicjować kolejny nowy zamiar odebrania danych, po prostu wykonaj następujące czynności:
źródło
Jeśli jest używany w FragmentActivity, spróbuj tego:
Pierwsza strona rozszerza FragmentActivity
W tym fragmencie musisz
getActivity()
najpierw zadzwonić ,Druga strona zawiera fragment :
źródło
Jeśli próbujesz uzyskać dodatkowe dane we fragmentach, możesz spróbować użyć:
Umieść dane, używając:
Uzyskaj dane, używając:
źródło
Możesz uzyskać dowolny rodzaj dodatkowych danych z zamiaru , bez względu na to, czy jest to obiekt, ciąg znaków, czy dowolny rodzaj danych.
a najkrótszym rozwiązaniem jest:
źródło
** Umieść dane według zamiaru - **
** Uzyskaj dane według zamiaru - **
jeśli wyślemy wartość całkowitą przez zamiar. kiedy musimy użyć 2. parametru 0 w getIntent (). getIntExtra („instituteId”, 0), w przeciwnym razie nie użyjemy 0, wtedy Android daje mi błąd.
źródło
Kotlin
Pierwsza aktywność
Druga aktywność
Sugestia
Zawsze przechowuj klucze w stałym pliku, aby lepiej zarządzać.
źródło
Tylko sugestia:
Zamiast używać „id” lub „name” w i.putExtra („id” .....) sugerowałbym, gdy ma to sens, użycie bieżących standardowych pól, które mogą być używane z putExtra (), tj. Intent.EXTRA_something.
Pełna lista znajduje się na stronie Intent (programiści Androida).
źródło
Możemy to zrobić w prosty sposób:
W FirstActivity:
W SecondActivity:
źródło
Przekaż cel z wartością przy Pierwszej Aktywności:
Otrzymać zamiar na drugie działanie; -
Używamy zasadniczo dwóch metod w celu przesłania wartości i uzyskania wartości. Do wysyłania wartości użyjemy
intent.putExtra("key", Value);
oraz podczas odbierania intencji innej działalności będziemy używaćintent.getStringExtra("key");
, aby uzyskać dane jak zamiaremString
lub użyć innej dostępnej metody, aby uzyskać inne rodzaje danych (Integer
,Boolean
etc.). Kluczem może być dowolne słowo kluczowe w celu identyfikacji wartości oznacza, jaką wartość udostępniasz. Mam nadzieję, że to zadziała.źródło
Możesz także zrobić w ten sposób
// zamierzenie wartości
// uzyskać wartość z zamiaru
źródło
Uzyskiwanie różnych rodzajów dodatkowych od zamierzonych
Aby uzyskać dostęp do danych z Intent, powinieneś wiedzieć dwie rzeczy.
Istnieją różne metody w klasie Intent, aby wyodrębnić różnego rodzaju typy danych. To wygląda tak
Więc jeśli znasz typ danych swojego varibale, który ustawiłeś w otherActivity, możesz użyć odpowiedniej metody.
Przykład pobierania ciągu znaków z działania z zamiaru
Lista różnych wariantów metod dla różnych dataType
Możesz zobaczyć listę dostępnych metod w oficjalnej dokumentacji intencji .
źródło
źródło
Właśnie opublikowałem tutaj odpowiedź , która obejmuje ten temat bardziej szczegółowo, w tym niektóre alternatywy.
Wykorzystuje Vapor API , nową platformę Android inspirowaną przez jQuery, którą napisałem, aby uprościć tworzenie Androida. Sprawdź przykład w tej odpowiedzi, w jaki sposób możesz łatwo przekazywać dane między działaniami.
Pokazuje także
VaporIntent
, co pozwala ci łączyć wywołania metod i wykorzystywać przeciążoną.put(...)
metodę:Możesz łatwo przekazywać dane do całej aplikacji za pomocą Vapor API , więc mam nadzieję, że będzie to pomocne dla ciebie i innych podczas tworzenia aplikacji.
źródło