2016-12-31 2 views
-1

Ich habe also zwei App-Seiten. Die App soll die PickedTask auf die zweite Seite weiterleiten und dann auf der nächsten Seite erscheinen. Was ich bekomme, ist auf der zweiten Seite der Erstellung nichts die TextView zugewiesen zu ändern geht nichts zu Feuer. http://imgur.com/a/iymeWProbleme mit der Weitergabe von Zeichenfolgen

Erste Seite:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class); 
    goodIntentions.putExtra("pickedTask", "Fire"); 
} 

public void goToTimerList(View view){ 
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class); 
    startActivity(goodIntentions); 
} 

Zweite Seite:

 TextView mahTextView; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(com.example.cluel.oc.R.layout.activity_timer_list); 
    mahTextView = (TextView) findViewById(R.id.taskText); 

} 

public void Test(View view){ 
    Intent goodIntentions = getIntent(); 
    String mahString = goodIntentions.getStringExtra("pickedTask"); 
    mahTextView.setText(mahString); 
} 
+0

Versuchen Sie wirklich, Intents zu verwenden, um Daten zwischen mehreren Ansichten in derselben App zu übertragen? Intents sollen stattdessen Daten zwischen mehreren Apps weiterleiten. Wenn nur eine App mehrere Ansichten anzeigt, müssen Sie Intents nicht verwenden. Aber in jedem Fall erhält Ihre zweite Ansicht keinen Text, weil Sie keinen Text in die Absicht einfügen, die Sie starten. Ihr Code erstellt zwei separate Intent-Objekte, eines mit Text und eines ohne, und startet dann die zweite Intent (die ohne Text). –

+0

Ich versuche, Daten über mehrere Aktivitäten zu übergeben. –

+0

Ich habe online Unterrichtsstunden gekauft und das war es, was sie sagten. Gibt es einen besseren Weg, dies zu tun? Eine Verbindung vielleicht? –

Antwort

1
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class); 
    goodIntentions.putExtra("pickedTask", "Fire"); 
} 

public void goToTimerList(View view){ 
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class); 
    startActivity(goodIntentions); 
} 

Sie zwei verschiedene Intent Objekte erstellt haben. onCreate() erstellt eine Intent setzt den Text aber sonst nichts damit. goToTimerList() erstellt eine Intent und startet sofort eine Aktivität mit ihm, aber keine Extras eingestellt. Da Sie jede Intent-Variable für jede Funktion lokal deklariert haben, sind sie völlig unabhängig, obwohl sie denselben Namen haben. Da Sie die Intent in onCreate() für alles, was nicht brauchen, sollten Sie nur alle Logik setzen die zweite Aktivität in goToTimerList() einschließlich Einstellung des Textes in der Absicht zu starten:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public void goToTimerList(View view){ 
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class); 
    goodIntentions.putExtra("pickedTask", "Fire"); 
    startActivity(goodIntentions); 
} 

Ich schlage vor, dass Sie über lokale Variablen lernen und Felder. Diese beiden Themen helfen Ihnen, mehr über die Verwendung von Variablen in Java zu erfahren.

Verwandte Themen