Daten von zweiter Activity zur Ersten zurück senden

D

DrLiightninG

Neues Mitglied
1
Hallo zusammen,
ich bin noch recht unerfahren im Gebiet der App Programmierung und habe ein Problem beim Datenverkehr zwischen zwei Activities.
Meine erste Activity (MainActivity) ist eine tabbed Activity und verwendet somit Fragmente, um die Layouts der 3 verschiedenen Menüs darzustellen. Auf einem dieser Layout Seiten befindet sich ein Button, welcher eine zweite Activity startet und einen String an sie übergibt (durch Intent). Sobald bei der zweiten Activity ebenfalls ein Button gedrückt wurde, soll die Eingabe eines EditText als String an die erste Activity übergeben werden und die zweite Activity geschlossen werden. Diese Übergabe des Strings habe ich bisher jedoch nicht hinbekommen. Hat da jemand eine Idee?

Starten der zweiten Activity: (ausgehend aus der inneren Klasse "PlaceholderFragment" der Klasse MainActivity)
Code:
rootView = inflater.inflate(R.layout.fragment_third_new, container, false);

                    ImageButton partyNameEB = (ImageButton) rootView.findViewById(R.id.party_name_ebutton);
                  

                    partyNameTV = (TextView) rootView.findViewById(R.id.party_name_etv);

                    partyNameEB.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                            // Perform action on click

                            Intent intent = new Intent(getActivity(), EditActivity.class);
                            intent.putExtra("TITLE", "Name der Party:");

                            startActivity(intent);
                            //Hier soll der Inhalt von EditText aus der zweiten Activity als Text von partyNameTV gesetzt werden ( partyNameTV.setText(Inhalt von editText) )
                        }
                    });


Die zweite Activity:
Code:
package com.kronenberg.jan.goparty;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.Serializable;

public class EditActivity extends AppCompatActivity{

    Intent intent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_edit);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        intent = getIntent();

        TextView title = (TextView) findViewById(R.id.title_tv_edit);
        title.setText(intent.getStringExtra("TITLE"));

        Button bestB = (Button) findViewById(R.id.bestB);

        EditText editText = (EditText) findViewById(R.id.tf_edit);

        bestB.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click
                //An dieser Stelle soll der Inhalt von EditText übergeben werden an die Stelle, wo die zweite Activity gestartet wurde
                finish();

            }
        });

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            // Respond to the action bar's Up/Home button
            case android.R.id.home:
                finish();
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

}
 
Zuletzt bearbeitet:
Hier mal Beispielhaft für eine Kommunikation wie ich sie handhabe:

Activity2 aus Activity1 aufrufen:
Code:
Intent eintragen = new Intent(MainActivity.this, Eintragen.class);
 neueActivityerstellt = true;
 startActivityForResult(eintragen, 101); // Zahl muss über 0 sein sonst wird onActivityResult nicht ausgeführt

Activity2 schließen und mit daten füllen
Code:
Intent intent = new Intent(Eintragen.this, MainActivity.class);
            intent.putExtra("Activity", 1);
            intent.putExtra("Gegenstand", txtGegenstand.getText().toString());
            intent.putExtra("Anzahl", txtAnzahl.getText().toString());
            this.setResult(RESULT_OK, intent);
            this.finish();

Activty1 verarbeiten von der Rückgabe#
Code:
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) //Wird gestart wenn eine Activity ein Wert zurückgibt
    {
        if (resultCode == Activity.RESULT_OK) {
            //Daten auslesen
            Bundle intent = data.getExtras();
            switch(intent.getInt("Activity"))
            {
                //Neuer Eintrag
                case 1:
                    //Log.d("Neuer Eintrag", intent.getString("Gegenstand") +"|" + intent.getString("Anzahl"));
                    verwalEintraege.neuerEintrag(intent.getString("Gegenstand"), intent.getString("Anzahl"));
                    break;
                //Eintrag Editieren
                case 2:
                    switch(intent.getInt("Aktion"))
                    {
                        //Eintrag ändern
                        case 1:
                            verwalEintraege.ändereEintrag(intent.getInt("Position"),intent.getString("Gegenstand"),intent.getString("Anzahl"),intent.getBoolean("Strike"));
                            break;
                        //Eintrag löschen
                        case 2:
                            verwalEintraege.löscheEintrag(intent.getInt("Position"));
                            break;
                    }
                    break;
            }
        }
        if (resultCode == Activity.RESULT_CANCELED) {
            Log.d("onActivityResult","Result Canceled");
        }
    }

Gruß Thomas
 
Danke für deine Antwort. Ich wusste nicht, dass es auch die Methode startActivityForResult gibt. Ich probiere es bei mir auch mal so.
 

Ähnliche Themen

A
  • AnimaAngelo85
Antworten
1
Aufrufe
313
swa00
swa00
A
Antworten
10
Aufrufe
1.006
swa00
swa00
M
Antworten
8
Aufrufe
945
deek
D
Zurück
Oben Unten