extras.getString liefert anderes als in putExtra festgelegt wurde

  • 6 Antworten
  • Letztes Antwortdatum
G

grumbleman

Neues Mitglied
0
Hi,

ich verzweifle grad etwas.

ich oeffne ueber einen button eine zweite activity und uebergebe dieser mit intent.putextra ein paar werte. In der zweiten Activity kommen alle Werte an, bis auf einen, der komischerweise den selben Wert hat wie ein anderer uebergebener Wert.

Am besten ich erklaers mal am Beispielcode:

Code:
Intent myIntent = new Intent(this, ZaehlenActivity.class); 
	     myIntent.putExtra(P1Name, P1.getText().toString());
	     myIntent.putExtra(P2Name, P2.getText().toString());
	     myIntent.putExtra(P3Name, P3.getText().toString());
	     myIntent.putExtra(P4Name, P4.getText().toString());
	     myIntent.putExtra(NoP, NoPstr);
	     myIntent.putExtra(SLstr, StartLstr);
	     this.startActivity(myIntent);
debug auf der Zeile this.startActivity(myIntent); zeigt mir die Belegung der Variablen for dem Wechsel in die neue Activity mit folgenden Werten
P1.getText().toString() -> "Name1"
P2.getText().toString() -> "Name2"
P3.getText().toString() -> "Name3"
P4.getText().toString() -> "Name4"
NoPstr -> "2"
StartLstr -> "10"

nachdem er in der anderen activity folgendes ausgefuehrt hat
Code:
public void onCreate(Bundle icicle) {
	        super.onCreate(icicle);
	     
	        setContentView(R.layout.zaehlen);
	        final Bundle extras = getIntent().getExtras();
	        if (extras!= null) {
	          P1Name= extras.getString(SchlagzaehlerActivity.P1Name);
	          P2Name= extras.getString(SchlagzaehlerActivity.P2Name);
	          P3Name= extras.getString(SchlagzaehlerActivity.P3Name);
	          P4Name= extras.getString(SchlagzaehlerActivity.P4Name);
	          NoP= extras.getString(SchlagzaehlerActivity.NoP);
	          SLstr = extras.getString(SchlagzaehlerActivity.SLstr);
	        } 
	   //       Daten aus anderem view klappt nicht (resources weg?)
	        
	        P1 = (TextView) findViewById(R.id.lbl_P1Name);
habe ich auf der letzten zeile hier einen debugpunkt und bekomme folgendes in die Variablen gepustet:
P1Name -> "Name1"
P2Name -> "Name2"
P3Name -> "Name3"
P4Name -> "Name4"
NoP="10"
SLstr=10"

ich begreife nicht weshalb NoP auf 10 gesetzt ist, hat jemand eine Idee?

danke und Gruß
Marco
 
Wie sehen denn die Stringkonstanten aus?

Gesendet von meinem Nexus 4 mit Tapatalk 2
 
Code:
        public static String P1Name = "Name1";
 	public static String P2Name = "Name2";
   	public static String P3Name = "Name3";
   	public static String P4Name = "Name4";
   	public static String NoPstr = "1";
   	public static String SLstr="1";

ich habe diese natuerlich vor dem PutExtra mit neuen Werten befüllt, wie oben angegeben
 
warum machst dieses NoPstr und SLstr Strings? und nicht einfach int werte, wenn es doch zahlen sind ?
 
ich habe es jetzt hinbekommen

ich habe die putExtraZeile veraendert in:
myIntent.putExtra("AnzahlSpieler", NoPstr);

und die extras.getString in
NoPstr= extras.getString("AnzahlSpieler");


nun funktioniert es...

Der ursprüngliche Beitrag von 09:55 Uhr wurde um 09:56 Uhr ergänzt:

@swordi

weil ich bisher nur ueber stringuebergaben gelesen hatte -> daher wandle ich immer von integer nach string und dann wieder von string nach integer :)
 
du kannst so gut wie alles übergeben.

primitive datentypen, komplexe datentypen. eigentlich fast alles, wenn es korrekt zur verfügung stellst.

einen int wert als string zu übergeben ist meistens eine unnötige fehlerquelle
 
grumbleman schrieb:
Code:
        public static String P1Name = "Name1";
 public static String P2Name = "Name2";
   public static String P3Name = "Name3";
   public static String P4Name = "Name4";
   public static String NoPstr = "1";
   public static String SLstr="1";

ich habe diese natuerlich vor dem PutExtra mit neuen Werten befüllt, wie oben angegeben

Da ist das Problem doch klar. Wie soll das System die Extras unterscheiden können, wenn du ihnen die gleichen Namen ('1') gibst?

Gesendet von meinem cm_tenderloin mit Tapatalk 2
 
Zurück
Oben Unten