Intent mit Daten (putExtra) zu anderer Activity

lordzwieback

lordzwieback

Erfahrenes Mitglied
210
Hallo, ich bins mal wieder..

ich möchte Daten von ActivityB zu ActivityA (wobei ActivityA das Hauptformular ist) per Intent übertragen. Bisher habe ich folgendes:

ActivityB:
Code:
Intent sendData = new Intent(ActivityB.this, ActivityA.class);
sendQRData.putExtra("data", data);
startActivity(data);

ActivityA (onCreate):
Code:
bundle = getIntent().getExtras();
dataonmain = bundle.getString("data");
test.setText(dataonmain.toString());

Nun erhalte ich beim Start folgendes:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference

Ich denke mir ist auch klar, warum da ein Fehler kommt. Da ActivityA quasi das Hauptformular ist und da natürlich noch kein Intent von ActivityB ausgehend passiert ist, bleibt er beim Abfragen des Intents auf ActivityA hängen. Kann ich irgendwie abfragen, ob ein Intent gerade angestoßen wurde? Hab schon versucht zu recherchieren, aber keine Ahnung, nach was ich suchen soll..
 
öhm :
Du stehst aber heute wirklich aufm Schlauch :)


Code:
Intent sendData = new Intent(ActivityB.this, ActivityA.class);
sendData.putExtra("data", "IRGENDWAS");
startActivity(sendData);


Code:
bundle = getIntent().getExtras();
String my data = (String) bundle.get("data"); // <-- my_data  hat "IRGENDWAS"
test.setText(my_data);


ACHTUNG :
Ich hatte noch nen Typo drin !!!!




Heut biste mir ein Bier schuldig :)
 
Zuletzt bearbeitet:
@swa00 hatte bisher nur mit Intents gearbeitet zum Wechseln von Activities. putExtra und getExtra hatte ich noch nicht und das oben habe ich mir aus einem Codebeispiel zusammengebastelt.

Kommts mir nur so vor oder ist dein Code genau wie meiner, nur dass ich den String oben schon deklariert hatte? Mit deinem Code kommt nämlich der gleiche Fehler.

Du kriegst von mir aus auch zwei Bierchen. :)
 
schau mal nochmal meinen Code an , ich hatte nen Typo

Nee dein Code ist schon anders , aber komplett :)
 
Ich glaub ich versteh hier was ganz anderes nicht..

ActivityA wird ja beim Starten der App aufgerufen. Also wird auch beim Start folgender Code im OnCreate abgearbeitet:
Code:
bundle = getIntent().getExtras();
String dataonmain = (String) bundle.get("data");
test.setText(dataonmain);

Wenn dieser Intent aber nicht existent ist weil er noch nicht aufgerufen wurde (da man noch nicht auf ActivityB war), gibt das keinen Fehler? Ich habe den Code jetzt genauso drin wie du es beschrieben hast (oben ActivityA, hier untendrunter AcitvityB), gleicher Fehler..

ActivityB:
Code:
Intent sendData = new Intent(ActivityB.this, ActivityA.class);
sendData.putExtra("data", "Teststring");
startActivity(sendData);
 
ja Moritz das muss ich natürlich wissen :)
Ich bin erst mal davon ausgegangen , dass du B aus A startetst und beim Starten dann die Daten an B übergibst .

Du magst aber von B nach A was übergeben ( wahrscheinlich dein Barcode), dann ist natürlich beim Starten der App
der getExtra leer und verursacht dir nen Absturz ( NullPointer)

Du halt ändern in

Code:
try
{
 bundle = getIntent().getExtras();
 String my data = (String) bundle.get("data"); // <-- my_data    hat "IRGENDWAS"
 test.setText(my_data);
}
catch (NullPointerException e)
{
 //  das  war  nix
}
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: lordzwieback
wtf, da hätte ich auch selbst drauf kommen können... :confused::mad:

Ich schiebs mal auf die Uhrzeit, sorry für das Hin und Her und danke natürlich.

Ich dachte nur die ganze Zeit ich muss doch irgendwie abfragen, ob der Intent "abgeschickt" wurde...
 
Nur so nebenbei - ich weis ja, dass du fertig werden willst ..

Aber das ist der denkbar schlechteste Weg , den du da gewählt hast :)
(Geht zwar, aber ich bekomme ein wenig Schüttelfrost) :)
 
Zuletzt bearbeitet:
Hau mir ein Stichwort um die Ohren (und warum das besser ist) und ich werde es mir mal anschauen, versprochen. :D
 
Stichwort : Listener

Wenn ich nachher wieder weitermache mit meiner Arbeit und ich Lust habe , bastel ich dir was zusammen

Ist trivial , aber ungemein praktisch
 
Alles klar, werde es mir auch mal anschauen und versuchen zu verstehen ;)
 
Ich war so frei :)

Code:
public class ClassMoritz
{
    private OnStatusListener           onStatusListener;
 
    ////////////////////////////////////////////////////////////////////////////////////////
    public interface OnStatusListener
    {
        public void onIchFangeAn         ();
        public void onIchHabeError       ();
        public void onIchHabeFertig      (String myBarcode);
 
    }
    ////////////////////////////////////////////////////////////////////////////////////////
    public void setOnStatusListener(OnStatusListener listener)
    {
        onStatusListener = listener;
    }

    ////////////////////////////////////////////////////////////////////////////////////////
    public void leseBarcode()
    {
     onStatusListener.onIchFangeAn();

     // Barcode  hier ermitteln  ( Wie auch immer )

     if (Barcode == Banane)
     {
      onStatusListener.onIchHabeError();
     }
     else
     {
      onStatusListener.onIchHabeFertig("EAN123456");
     }
    }
}


Deklaration
Code:
  ClassMoritz cm = new ClassMoritz();
        cm.setOnStatusListener(new ClassMoritz.OnStatusListener()
        {
            @Override
            public void onIchFangeAn()
            {
             test.setText("Barcode wird ermittelt ...  Bitte warten");
            }

            @Override
            public void onIchHabeError()
            {
             test.setText("Barcode konnte nicht ermittelt werden");
            }

            @Override
            public void onIchHabeFertig(String myBarcode)
            {
             test.setText(myBarcode);
            }
        });

Aufruf :
Code:
    onClick() -> cm.leseBarcode();


Heute schon das dritte Bier :drool: - Dabei trinke ich gar kein Alk :)
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: lordzwieback
Vielen Dank, werde mir mal mein Projekt kopieren und mit dem Listener bisschen experimentieren. :)
 
  • Danke
Reaktionen: swa00

Ähnliche Themen

B
Antworten
4
Aufrufe
494
bb321
B
M
  • MikelKatzengreis
Antworten
5
Aufrufe
131
swa00
swa00
FabianDev
Antworten
5
Aufrufe
559
swa00
swa00
Zurück
Oben Unten