Mam 2 działania, Działanie 1 i Działanie 2 .
W Activity1
Mam przycisk i TextView . Po kliknięciu przycisku uruchamiane jest działanie 2 .
W Activity2
Mam EditText .
Chcę wyświetlić dane pobrane z EditText w Activity2 w TextView w Activity1 po naciśnięciu przycisku Wstecz z Activity2 .
czy ktoś może mi pomóc z kodem, aby to zadziałało?
android
android-activity
parent-child
pass-data
kumareloaded
źródło
źródło
startActivityForResult
Activity2
umieszcza wartość w trwałym magazynie iActivity1
odczytuje ją stamtąd.Odpowiedzi:
Uruchom działanie 2 za pomocą
startActivityForResult
i użyjsetResult
metody wysyłania danych z działania 2 do działania 1. W Activity1 trzeba będzie zastąpićonActivityResult
za aktualizacjęTextView
zEditText
danymi z Activity2.Na przykład:
W działaniu 1 uruchom działanie 2 jako:
W Activity2 użyj
setResult
do odesłania danych:A w Activity1 otrzymuj dane z
onActivityResult
:Jeśli możesz, użyj również SharedPreferences do udostępniania danych między działaniami.
źródło
SharedPreferences
zobacz ten przykładAktywność 1 powinna rozpocząć Aktywność 2 od
startActivityForResult()
.Działanie 2 powinno zostać użyte
setResult()
do wysłania danych z powrotem do działania 1 .W Activity2 ,
W Activity1 ,
źródło
Pozostałe odpowiedzi nie działa, kiedy kładę
setResult
sięonBackPressed
. Komentowanie połączenia z superonBackPressed
i dzwonieniefinish
ręcznie rozwiązuje problem:I w pierwszej aktywności:
źródło
Weź to jako alternatywę dla startActivityforResult.Ale pamiętaj, że w takich przypadkach takie podejście może być kosztowne pod względem wydajności, ale w niektórych przypadkach może być konieczne użycie.
W ćwiczeniu 2
W działaniu 1
źródło
to twoja pierwsza aktywność1.
Stąd zaczynasz swoją klasę Activity2.class za pomocą startActivityForResult (mRequestCode, Activity2.class);
To jest twoje drugie działanie, nazywa się Activity2
Teraz, kiedy skończysz z drugą aktywnością, wówczas wywołujesz metodę setResult (), onBackPress () lub kliknięcie dowolnego przycisku, gdy Activity2 niszczy, a następnie metoda wywołania aktywności Activity1 naActivityResult () wywołuje stamtąd, możesz pobrać dane z zamiaru ..
Mam nadzieję, że ci to pomoże ... :)
źródło
Przeczytaj to:
Te artykuły pomogą Ci zrozumieć, jak przesyłać dane między dwiema czynnościami w Androidzie.
źródło
Z poziomu FirstActivity wywołaj SecondActivity za pomocą metody startActivityForResult ().
Na przykład:
W SecondActivity ustaw dane, które chcesz powrócić do FirstActivity. Jeśli nie chcesz wracać, nie ustawiaj żadnych.
Na przykład: W secondActivity, jeśli chcesz odesłać dane:
Jeśli nie chcesz zwracać danych:
Teraz w klasie FirstActivity napisz następujący kod dla metody onActivityResult ().
źródło
TL; DR Użyj
Activity.startActivityForResult
Długa odpowiedź:
Powinieneś zacząć od przeczytania dokumentacji dla programistów Androida. W szczególności temat twojego pytania jest omówiony w
Starting Activities and Getting Results
częściActivity
dokumentacji.Na przykład kod, zestaw SDK systemu Android zapewnia dobre przykłady. Również inne odpowiedzi tutaj dostarczają krótkich fragmentów przykładowego kodu do użycia.
Jeśli jednak szukasz alternatyw, przeczytaj to pytanie SO . To dobra dyskusja na temat korzystania
startActivityForResults
z fragmentów, a także kilka innych podejść do przekazywania danych między działaniami.źródło
i mam problem, który chciałem zrobić, wysyłając ten typ danych w przycisku programowym, który stworzyłem, i przycisk programowy, który jest domyślny w każdym urządzeniu z Androidem, więc zrobiłem to, najpierw zrobiłem
Intent
w moim „A”Activity
:Następnie w mojej drugiej działalności zadeklarowałem pole w moim „B”
Activity
:następnie po pomyślnym wysłaniu zapytania lub za każdym razem, gdy chciałem powiedzieć czynności „A”, że to zadanie zostało pomyślnie wykonane, zmień wartość parametru wynikowego na to samo, co powiedziałem w „A”,
Activity
co w moim przypadku to „60” i następnie:PS: Pamiętaj, aby usunąć
Super
metodę onBackPressed, jeśli chcesz, aby działała poprawnie.wtedy powinienem również wywołać
onActivityResult
metodę w moim działaniu „A”:to wszystko, mam nadzieję, że to ci pomoże. #HappyCoding;
źródło