2017-09-12 1 views
0

Ich habe 2 Aktivitäten und ich versuche, Werte von der ersten in die zweite. In der ersten Aktivität habe ich eine Schaltfläche mit onClick-Parameter erstellt.putExtra() funktioniert nicht für Button: onClick

<Button 
    android:id="@+id/naviButton" 
    android:layout_width="match_parent" 
    android:layout_height="60dp" 
    android:text="navigate" 
    android:layout_alignParentBottom="true" 
    android:onClick="startNavigation"/> 

Dann habe ich zwei Methoden in Aktivität SelectedDock: onCreate und startNavigation

public void startNavigation (View view) { 
    Intent GPSintent = new Intent(SelectedDock.this, GPSActivity.class); 
    String XCorValue = "What's wrong with you?!"; 
    GPSintent.putExtra("SelectedXCor", XCorValue); 
    startActivity(GPSintent); 

Im GPSActivity ich habe:

public class GPSActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_gps); 
    TextView XCorTV = (TextView) findViewById(R.id.textView2); 
    XCorTV.setText(getIntent().getExtras().getString("SelectedXcor")); 
} 
} 

Und in meiner app ich nichts sehen. Irgendein Text. Wenn ich .setText entferne, kann ich den Standardwert von TextView sehen. Ich habe ein Tutorial dafür verwendet und ein einfacher Code funktioniert, aber für meinen .. nicht. Was ist falsch? Ich muss hinzufügen, dass SelectedDock dritte Aktivität in meinem Projekt ist und für die erste und zweite, habe ich auch Intent verwendet.

+5

Es ist ein Tippfehler, der Schlüssel ist 'SelectedXCor' und nicht' SelectedXcor'. Das "C" ist in der Methode "StartNavigation" ein Großbuchstabe. –

Antwort

0
GPSintent.putExtra("SelectedXCor", XCorValue); 

XCorTV.setText(getIntent().getExtras().getString("SelectedXcor")); 

Anstelle der Festcodierung von "SelectedXCor" verwenden Sie eine letzte statische Variable in einer anderen Klasse, sodass Sie diese Variable in der gesamten Anwendung verwenden können, um solche Fehler zu minimieren.

eine Klasse Make "IntentKeys" genannt und eine variable

public static final String KEYCORE = "SelectedXCor"; 

Jetzt verwenden erklären, wo immer Sie wollen,

GPSintent.putExtra(IntentKeys.KEYCORE, XCorValue); 

XCorTV.setText(getIntent().getExtras().getString(IntentKeys.KEYCORE)); 
+0

Vielen Dank für diese Lösung und den Rat. – Darek

+0

Sie sind willkommen ... – SAM

1

Sie sind Pass SelectedXCor als Schlüssel in putExtra und SelectedXcor mit anderen Schlüssel abgerufen werden, warum Sie ist nicht das Abrufen von Daten

gerade dieses

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_gps); 
    TextView XCorTV = (TextView) findViewById(R.id.textView2); 
    XCorTV.setText(getIntent().getExtras().getString("SelectedXCor")); 
} 

Beispielcode XCorTV.setText(getIntent().getExtras().getString("SelectedXCor")); } ändern

+0

Vielen Dank für Ihre Antwort. Ich habe diese einfache Regel immer noch vergessen. Allerdings habe ich früher Strings als Namen für andere String-Objekte verwendet und alles war korrekt. In meinem Fall war es für ListView-Elemente. – Darek

+0

@Darek herzlich willkommen –

0

getIntent(). GetExtras. Gebe dir ein Bündel zurück.

versuchen Sie dies, getIntent(). GetStringExtra ("SelectedXCor");

erhalten Sie die Zeichenfolge;

Verwandte Themen