2013-03-21 14 views
32

ten sposób ciągi są dodawane do Extras:Android Intent.getStringExtra() zwraca 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(); 

ten sposób staram się wyodrębnić je w onActivityResult():

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

Ale po drugim blok kodu name i descnull, chociaż prior ma odpowiednią wartość. Co więcej, w debugerze widzę, że data.mExtras.mMap zawiera potrzebne ciągi, ale tylko po pierwszym żądaniu do niego.

+0

Czy jesteś pewien, że 'prior' ma właściwą wartość, a nie wartość domyślną (50), którą ustawiasz? –

+0

Tak, ale problem był w 'edt_name.getText()', który zwraca nie ciąg 'String', ale niektóre klasy scheda, może być? – hotkey

Odpowiedz

70

po włożeniu Extras próbując dodając .toString()

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

Widzisz wartość CharSequence tam, ale trzeba go przekonwertować do String zadzwonić getStringExtra(). Oczywiście, po prostu zrób to dla Strings. Widzisz poprawną wartość dla swojego int, ponieważ jest to zrobione poprawnie

+1

Dzięki, działa, a także '" "+ edt_name.getText()', która wygląda nie tak ładnie :) – hotkey

+1

Działa, ponieważ '" "' jest literałem String i dodajesz do niego. Działa w taki sam sposób, jak "" "+ 2" wychodzi na "2". Cokolwiek dodaje się do literału, jest konwertowane na łańcuch znaków za pomocą funkcji "toString" własnej klasy. – MCeley

+0

@codeMagic, dlaczego mówisz, że to "obiekt"? Czy to nie jest "CharSequence"? – Pacerier

Powiązane problemy