2013-03-21 4 views
32

Dies ist, wie Strings Extras werden hinzugefügt:Android Intent.getStringExtra() gibt null

Intent i = new Intent(); 
i.putExtra("Name", edt_name.getText()); 
i.putExtra("Description", edt_desc.getText()); 
i.putExtra("Priority", skb_prior.getProgress()); 
setResult(RESULT_OK, i); 
finish(); 

Dies ist, wie ich versuche, sie in onActivityResult() zu extrahieren:

String name = data.getStringExtra("Name"); 
String desc = data.getStringExtra("Description"); 
int prior = data.getIntExtra("Priority", 50); 

Aber nach dem zweiten Codeblock name und desc sind null, obwohl prior hat seinen richtigen Wert. Außerdem kann ich im Debugger sehen, dass data.mExtras.mMap benötigt Strings, aber nur nach erster Anfrage an sie.

+0

Sind Sie sicher, dass 'prior 'den richtigen Wert hat und nicht den Standardwert (50), den Sie einstellen? –

+0

Ja, aber das Problem war in 'edt_name.getText()', die nicht 'String' zurückgibt, aber einige Erben Klasse, kann sein? – hotkey

Antwort

70

Wenn Sie fügen Sie Ihre Extras versuchen, das Hinzufügen .toString()

i.putExtra("Name", edt_name.getText().toString()); 

Sie sehen den Wert CharSequence da drin, aber Sie müssen es zu einem String konvertieren getStringExtra() zu nennen. Offensichtlich tun Sie dies für die Strings. Sie sehen den richtigen Wert für Ihre int, denn das ist richtig gemacht

+1

Danke, es funktioniert, sowie '" "+ edt_name.getText()', die nicht so hübsch aussieht :) – hotkey

+1

Es funktioniert, weil '" "' ist ein String-Literal und Sie fügen hinzu. Es funktioniert genauso wie "" + 2 "zu" 2 "kommt. Was dem Literal hinzugefügt wird, wird über die eigene toString-Funktion der eigenen Klasse in einen String umgewandelt. – MCeley

+0

@codeMagic, Warum sagst du, dass es ein 'Objekt' ist? Ist das nicht 'CharSequence'? – Pacerier

Verwandte Themen