2016-11-15 2 views
0

Ich habe mehrere Aktivitäten, die miteinander verknüpft sind. Es gibt: Activity_1 -> Activity_2 -> Activity_3 wo Aktivität 1 ist die Mutter der Aktivität 2 und Aktivität 2 Elternteil Aktivität 3. Das Manifest ist wie folgt:Arbeiten mit Absichtsdaten im Umgang mit mehreren Aktivitäten

<activity android:name=".Activity_1" 
...> 
<activity android:name=".Activity_2"> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value=".activities.Activity_1" /> 
</activity> 
<activity android:name=".Activity_3"> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value=".activities.Activity_2" /> 

</activity> 

in Activity_1 Adapter habe ich einige Daten Activity_2 über Onclick Zuhörer senden (über die Adapter):

view.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        Intent intent = new Intent(v.getContext(), Activity_2.class); 
        intent.putExtra("title",title.getText()); 
        v.getContext().startActivity(intent); 
       } 
      }); 

und in Activity_2 rufe ich, dass Daten:

.... 
private String title; 
.... 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
    title = extras.getString("title"); 
    } 
    ... 
    // some important usage of title here 

ich habe noch eine o nklicke den Listener, der von Aktivität 2 zu Aktivität 3 geht und wenn ich auf die Zurück-Schaltfläche klicke, stürzt die App ab, weil der Titel zurückgegeben wird null.

Ich möchte nicht Präferenzen verwenden, um den Titel zu speichern, irgendeine Idee, wie Sie das vermeiden können?

Antwort

0

Es scheint, als ob Sie Informationen aus der Absicht während onResume abrufen, die von Activity1 -> Activity2 aufgerufen wird und auch auf dem Weg zurück von Activity3 -> Activity2.

Sie können dies auch während onCreate stattdessen tun. Macht das Sinn?

EDIT: So ... Ich habe gerade gelernt, dass die Navigation (die "< -" auf der Aktionsleiste) unterscheidet sich von der Navigation zurück (Hard Button). Sie können dieses Problem mit verschiedenen Ansätzen lösen:

+0

Dank für Ihren Kommentar nur tun, aber ich bin immer die Einzugsdaten während 'onCreate ' –

+0

nur aktualisiert die Antwort mit meinen Ergebnissen –

+0

danke, löste die zweite Methode das Problem –

0

Statt den Kontext aus dem View zu bekommen, sollten Sie den Activity Kontext erhalten. Versuchen Sie statt dessen:

Intent intent = new Intent(v.getContext(), Activity_2.class); 
        intent.putExtra("title",title.getText()); 
        v.getContext().startActivity(intent); 

, dass:

Intent intent = new Intent(this, Activity_2.class); 
        intent.putExtra("title",title.getText()); 
        this.startActivity(intent); 

eigentlich, wenn Ihr in einer Aktivität können Sie auch startActivity(intent);

+0

Die Absicht heißt in meinem Adapter und nicht die Aktivität, ich aktualisierte die Frage –

+0

Ihre Frage ist noch unklar – safari

+0

Welcher Teil ist unklar? Ich kann die Frage bei Bedarf ändern –

Verwandte Themen