2016-07-21 11 views
0

Ich möchte die Navigation zur Symbolleiste hinzufügen. Ich muss von einem Fragment in einer Aktivität zu einem bestimmten Fragment in einer anderen Aktivität gelangen.Wie navigiere ich von Fragment in einer Aktivität zu Fragment in einer anderen Aktivität?

Es ist ein wenig so aussieht, wo jede orange Linie bedeutet, auf eine neue Aktivität oder ein Fragment der Navigation:

enter image description here

Wie kann ich von Fragment B bewegen A von OTHER fragmentieren?

+0

Nehmen die Fragmente A und B bei ihren Aktivitäten den gesamten Bildschirm ein? Und sind das nur Fragmente, die in diesen Aktivitäten gezeigt werden? – Marat

+0

Haben Sie versucht, Code? –

+0

Haben Sie versucht, Ereignisse oder Schnittstelle/ – Eenvincible

Antwort

1

diese Schritte Betrachten hinzufügen Navigation auf benutzerdefinierte Symbolleiste zeigen:

Von Activity 1 hält Fragment A, Sie wollen direkt zu laden Fragment B in Activity 2.

Nun denke ich zuerst, dann drücken Sie eine Taste in Fragment A, können Sie direkt zu Activity B gehen.

Dann heißt es, man einfach Fragment B laden können, sobald Sie in Activity 2.

ankommen Da Sie mit zurück Navigation beschäftigen (? Ich glaube, Sie meinen die upNavigation), können Sie die folgende außer Kraft setzen:

klar

Aber Vorsicht, denn wenn man ein genaues Fragment in Aktivität laden muß 2, müssen Sie wissen, irgendwie:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 

     case android.R.id.home: 
      Intent intent = new Intent(this, Activity2.class); 
      intent.putExtra("frag", "fragmentB"); 
      startActivity(intent); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 

} 

Wie Sie sehen können, wenn Sie in der Symbolleiste auf den zurück-Pfeil klicken, wir übergeben ein Wert durch unsere Absicht zu identifizieren, welches Fragment wir laden wollen.

nächste in Ihrem Activity2, einfach die intent extra bekommen und einen Schalter tun oder ein if statement:

@Override 
public void onResume(){ 
    super.onResume(); 

    Intent intent = getIntent(); 

    String frag = intent.getExtras().getString("frag"); 

    switch(frag){ 

    case "fragmentB": 
     //here you can set Fragment B to your activity as usual; 
     fragmentManager.beginTransaction().replace(R.id.container_body, new FragmentB()).commit(); 
     break; 
    } 
} 

Von hier aus sollten Sie Ihr Fragment B zeigen in Aktivität haben 2.

Jetzt können Sie In Aktivität 2 können Sie entscheiden, wohin Sie gehen, wenn ein Benutzer auf den Pfeil nach Hause klickt!

Ich hoffe, das hilft Ihnen, eine Idee zu bekommen.

Hinweis: Ich habe über den Interface-Ansatz nachgedacht und festgestellt, dass dies nicht notwendig ist, da dies mit diesem Ansatz einfach durchgeführt werden kann!

+0

Wenn ich dies tue bekomme ich den Fehler: –

+0

Verursacht von: java.lang.NullPointerException: Versuch, die virtuelle Methode 'java.lang.String android.os.Bundle.getString (java.lang. String) 'für einen Null-Objektverweis. @Envincible. Übrigens mag ich deine Apps sehr, ich habe sie im Play Store angeschaut! –

+0

Hey danke Tom; Lass mich dir dabei helfen; Sie sehen, Sie müssen sicherstellen, dass die Absicht nicht zuerst in OnResume null ist; Wir können chatten, wenn Sie mehr Hilfe benötigen. – Eenvincible

-1

Verwenden Sie diesen Code Ihr Fragment

fragmentManager.beginTransaction().replace(R.id.container_body, new FragmentC()).commit(); 

zu ändern und

Toolbar toolbar = (Toolbar) rootView.findViewById(R.id.toolbar); 
    ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar); 
    ((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true) 
    ((AppCompatActivity)getActivity()).getSupportActionBar().setHomeButtonEnabled(true);