Jak w aplikacji dla systemu Android rozpocząć nową aktywność (GUI) po kliknięciu przycisku innej czynności i jak przesyłać dane między tymi dwiema czynnościami?
625
Jak w aplikacji dla systemu Android rozpocząć nową aktywność (GUI) po kliknięciu przycisku innej czynności i jak przesyłać dane między tymi dwiema czynnościami?
Łatwy.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
Dodatki są pobierane po drugiej stronie poprzez:
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
String value = intent.getStringExtra("key"); //if it's a string you stored.
}
Nie zapomnij dodać nowej aktywności do pliku AndroidManifest.xml:
<activity android:label="@string/app_name" android:name="NextActivity"/>
CurrentActivity.this.startActivity(myIntent)
istartActivity(myIntent)
?Utwórz zamiar działania ViewPerson i przekaż PersonID (na przykład wyszukiwanie w bazie danych).
Następnie w ViewPerson Activity możesz uzyskać pakiet dodatkowych danych, upewnić się, że nie jest on zerowy (w przypadku, gdy czasami nie przekazujesz danych), a następnie pobierz dane.
Teraz, jeśli chcesz współdzielić dane między dwoma Działaniami, możesz także mieć Global Singleton.
Następnie nazwij to w dowolnej czynności, wykonując:
źródło
Aktualne odpowiedzi są świetne, ale dla początkujących potrzebna jest bardziej kompleksowa odpowiedź. Istnieją 3 różne sposoby rozpoczęcia nowej działalności w systemie Android i wszystkie one wykorzystują
Intent
klasę; Zamierzenie | Programiści Androida .onClick
atrybutu przycisku. (Początkujący)OnClickListener()
anonimowej klasy. (Pośredni)switch
instrukcji. (Zawodowiec)Oto link do mojego przykładu, jeśli chcesz śledzić:
1. Używając
onClick
atrybutu przycisku. (Początkujący)Przyciski mają
onClick
atrybut znaleziony w pliku .xml:W klasie Java:
Zaleta : łatwa do wykonania w locie, modułowa i może z łatwością ustawić wiele
onClick
s na ten sam cel.Wada : trudna czytelność podczas recenzowania.
2. Przypisywanie
OnClickListener()
anonimowej klasy. (Pośredni)Dzieje się tak, gdy ustawiasz osobne
setOnClickListener()
dla każdego z nichbutton
i zastępujeszonClick()
je według własnych zamiarów.W klasie Java:
Zaleta : łatwa do wykonania w locie.
Wada : Będzie wiele anonimowych klas, które utrudnią czytelność podczas recenzji.
3. Metoda interfejsu z szerokim zakresem aktywności za pomocą
switch
instrukcji. (Zawodowiec)Dzieje się tak, gdy używasz
switch
instrukcji dla przycisków w ramachonClick()
metody do zarządzania wszystkimi przyciskami działania.W klasie Java:
Zaleta : Łatwe zarządzanie przyciskami, ponieważ wszystkie zamiary przycisków są rejestrowane za pomocą jednej
onClick()
metodyW drugiej części pytania, przekazywanie danych, zobacz Jak przesyłać dane między działaniami w aplikacji na Androida?
źródło
Gdy użytkownik kliknie przycisk, bezpośrednio w pliku XML w następujący sposób:
Za pomocą atrybutu
android:onClick
deklarujemy nazwę metody, która musi być obecna w działaniu nadrzędnym. Więc muszę stworzyć tę metodę w naszej działalności w ten sposób:źródło
źródło
źródło
Emmanuel,
Myślę, że dodatkowe informacje należy podać przed rozpoczęciem działania, w przeciwnym razie dane nie będą jeszcze dostępne, jeśli uzyskujesz do nich dostęp za pomocą metody onCreate NextActivity.
źródło
Z działania wysyłania wypróbuj następujący kod
Z działania odbierającego wypróbuj następujący kod:
Następnie wystarczy dodać następujący kod do pliku AndroidManifest.xml
źródło
źródło
Wypróbuj tę prostą metodę.
źródło
Możesz wypróbować ten kod:
źródło
Sposobem na rozpoczęcie nowych działań jest transmisja zamiaru, a istnieje szczególny rodzaj zamiaru, którego można użyć do przekazania danych z jednego działania do drugiego. Moja rekomendacja to przejrzenie dokumentów programistów Androida związanych z zamiarami ; zawiera wiele informacji na ten temat i zawiera również przykłady.
źródło
Kotlin
Pierwsza aktywność
Druga aktywność
Sugestia
Zawsze przechowuj klucze w stałym pliku, aby lepiej zarządzać.
źródło
Rozpoczęcie aktywności od innej aktywności jest bardzo częstym scenariuszem wśród aplikacji na Androida.
Aby rozpocząć aktywność, potrzebujesz zamiaru obiektu .
Jak tworzyć obiekty intencyjne?
Obiekt docelowy przyjmuje dwa parametry w swoim konstruktorze
Na przykład, jeśli masz dwie czynności, powiedz
HomeActivity
iDetailActivity
chcesz rozpocząćDetailActivity
odHomeActivity
(HomeActivity -> DetailActivity).Oto fragment kodu, który pokazuje, jak uruchomić DetailActivity
I gotowe.
źródło
Rozpocznij inną aktywność od tej aktywności i możesz przekazać parametry również przez Obiekt pakietu.
Odzyskaj dane w innym działaniu (YourActivity)
źródło
Zaimplementuj interfejs View.OnClickListener i zastąp metodę onClick.
źródło
Chociaż udzielono już prawidłowych odpowiedzi, ale jestem tutaj, aby znaleźć odpowiedź w języku Kotlin. To pytanie nie dotyczy konkretnego języka, dlatego dodam kod, aby wykonać to zadanie w języku Kotlin.
Oto jak to robisz w Kotlin dla Andorida
źródło
Najprostszym sposobem na otwarcie aktywności po kliknięciu przycisku jest:
onclick
funkcji.MainActivity.java
SecondActivity.java
AndroidManifest.xml (wystarczy dodać ten blok kodu do istniejącego)
źródło
Najpierw weź Button w XML.
Stwórz listę przycisku.
źródło
Po kliknięciu przycisku:
Aby otrzymać dodatkowe dane od
NextActivity.class
:źródło
Napisz kod w pierwszej aktywności.
W secondActivity.class
źródło
Umieść widget przycisku w XML tak jak poniżej
Po tej inicjalizacji i obsłudze nasłuchiwania kliknięć w działaniu jak poniżej ...
W metodzie Activity On Create:
źródło