Wie füge ich Daten, die ich in ein EditText-Feld eingegeben habe, in ein Array ein, um sie in einer anderen Aktivität aufzulisten?

8

Im Folgenden sind die 3 Java-Klassen, die ich für meine Android-Anwendungsentwicklung verwende. Ich möchte die Student-Daten (Name und Telefonnummer) von der AddActivity hinzufügen, die auf der MainActivity-Seite gespeichert wird, nachdem Sie auf "Add" geklickt haben. Ich habe darüber recherchiert und versucht, ein Array zu verwenden. Aber ich bin ziemlich verwirrt darüber, wie die Logik sein muss, damit der Code die in AddActivity eingegebenen Daten in die MainActivity-Seite sendet. Kann jemand mir eine Anleitung geben, wie man das ausarbeitet und würde wirklich dankbar sein, wenn Sie mir einen anderen Weg zeigen könnten, eher wie ich es versuche. Ich möchte, dass die Daten in einem ListView-Format in der MainActivity nach jedem "Add" gespeichert werden, auf das ich in der AddActivity-Seite geklickt habe. Ich hoffe, dass mir jemand dabei helfen kann. Danke.

HauptAktivität.java - Ссылка

%Vor%

HinzufügenAktivität.java - Ссылка

%Vor%

Student.java - Ссылка

%Vor%

[1]: [Bild der Hauptaktivitätsseite] Ссылка

[2]: [Bild der Aktivitätsseite hinzufügen] Ссылка

    
宿命的な孤独 24.02.2017, 18:31
quelle

9 Antworten

4

Wie oben erwähnt, wäre die korrekte Methode die Methode startActivityForResult . Überprüfen Sie dies .

Und wie man das macht, verdammt einfach! Ändern Sie Ihren Code:

%Vor%

und in derselben Aktivität (MainActivity) auf das Ergebnis hören Außerdem würde ich empfehlen, die parceler.org lib zum Senden von Objekten zu verwenden.

%Vor%

Und in Ihrer AddActivity, wenn Sie hinzufügen, tun Sie dies einfach.

%Vor%

Das sollte funktionieren! Prost!

    
MadScientist 03.03.2017, 06:35
quelle
3

Verwenden Sie StartActivityForResult für AddActivity und geben Sie ein Objekt von hier zurück und verwenden Sie es in MainActivity. Zum Beispiel siehe hier

    
Mundroid 24.02.2017 18:53
quelle
0

Da Sie die Daten in einer Datei speichern, sollte die Aktivität zum Hinzufügen nur die Daten in die Datei schreiben. Dann sollte die Hauptaktivität immer die Datei lesen, um die Liste zu aktualisieren.

    
Code-Apprentice 25.02.2017 10:15
quelle
0

Ich würde vorschlagen, eine statische Klasse zu verwenden, wenn Sie keine Datenbank verwenden möchten. Oder wenn Sie eine Datei verwenden sollten, ist es sehr einfach, in eine Datei zu schreiben, wenn Sie in der nächsten Aktivität hinzufügen und lesen.

Erstellen Sie einfach eine statische Klasse wie diese.

%Vor%

oder mit einer Datei:

%Vor%

Rufen Sie einfach den Schüler hinzufügen und die Schüler in der richtigen Klasse wie folgt.

%Vor%

oder

%Vor%

Ich hoffe, es hilft. In Ihrem onclick Listener:

%Vor%

und ich kann nicht sehen, wo Sie die Liste abrufen. aber benutze einfach die getStudents der Klasse.

    
Ivan 01.03.2017 12:22
quelle
0
%Vor%

in der ersten Aktivität,

%Vor%

in Ihrer zweiten Aktivität, wenn Sie fertig sind,    Mach dein Zeug, was du willst in der zweiten Aktivität. und übergebe es an mainActivity

%Vor%

WENN SIE FRAGMENT VERWENDEN

wenn Sie startActivityResult () in Fragment bedeutet,

Ihr Fragment mainActivity muss super () in

zurückgeben %Vor%     
Noorul 03.03.2017 04:41
quelle
0

Nachdem Sie die Details vom Schüler erhalten haben, legen Sie die entsprechenden Details in ein Bündel und verwenden Sie die Absicht, um zur Hauptaktivität zurückzukehren. Verwenden Sie dann Bündel, um die Daten in der Hauptaktivität zu extrahieren.

    
Ali Nasir 05.03.2017 11:11
quelle
0

Sie können startActivityForResult für dasselbe verwenden. Wenn Sie die Antwort noch nicht gefunden haben, lassen Sie es mich bitte wissen. Ich werde dir den Code zur Verfügung stellen.

Viele der obigen Antworten haben diese Sache bereits sehr gut definiert.

    
Kushaal Singla 06.03.2017 11:25
quelle
0

Hier geht es um die Kommunikation zwischen Aktivitäten. Sie können Event Bus verwenden, um dies zu realisieren. Ссылка

Dann 1. Fügen Sie dem build.grade der App eine Event-Bus-Abhängigkeit hinzu.

%Vor%
  1. Registrieren Sie die Registrierung in der MainActivity.java

    und heben Sie die Registrierung auf

    @Override protected void onStart () {     super.onStart ();     EventBus.getDefault (). Register (this); }

    @Override protected void onStop () {     super.onStop ();     EventBus.getDefault (). Unregister (this); }

3.Post-Ereignis in der AddActivity.java

%Vor%

4.Implementierung der Ereignisbehandlungsmethode in MainActivity

%Vor%     
Jack_Zhang 06.03.2017 08:04
quelle
0

Um die Antwort von MadScientist ein wenig zu erweitern, benötigt ListView Adapter, um die Daten in der Ansicht zu setzen. Sie müssen einen ArrayAdapter für Ihre Listenansicht definieren, mit der Sie kommunizieren können. Dies muss in Ihre MainActivity gehen und wird in der Methode onCreate initialisiert. Angenommen, Sie möchten beide Arten von Informationen anzeigen, müssen Sie Ihren Adapter mit dem integrierten Layout erstellen, um zwei Elemente über android.R.layout.simple_list_item_2 anzuzeigen. Wenn Sie jedoch ein eigenes Layout erstellen möchten, können Sie nachsehen, wie Sie das tun hier .

%Vor%

Rufen Sie die startActivityForResult(intent, 123) in Ihrem Listener auf, um die neue Aktivität zu starten. Wenn Sie Ihre Daten eingegeben haben, fügen Sie Ihre Artikel zur Absicht hinzu und rufen Sie finish() in Ihrem AddActivity auf. Überschreibe onActivityResult in deinem MainActivity , um die Elemente aus deiner Absicht zu entfernen und sie zu deiner Liste hinzuzufügen. Abschließend benachrichtigen Sie den Adapter über adapter.notifyDataSetChanged()

    
Anthony Quintero 06.03.2017 21:05
quelle