2

Ich habe eine Navigationsschublade mit einer Aktivität und mehreren Fragmenten wie frag a, frag b, frag c, ... erstellt. Wenn ich in Fragment c auf die Schaltfläche back klicke, sollte es zu frag a kommen. Das Problem ist, dass die Operation nicht funktioniert. Kann mir jemand sagen, wie man es in dem unten stehenden Code macht?Zurück Button in Navigationdrawer Fragment

private void displayView(int position) { 
    Fragment fragment=null; 

    switch (position) { 
     case 0: 
      fragment = new FragmentA(); 
      break; 
     case 1: 
      fragment = new FragmentB(); 
      break; 
     case 2: 
      fragment = new FragmentC(); 
     default: 
      break; 
    } 

    if (fragment != null) { 
     FragmentManager fragmentManager = getFragmentManager(); 
     fragmentManager.beginTransaction() 
       .replace(R.id.frame_content, fragment) 
       .addToBackStack(null) 
       .commit(); 
     menulistView.setItemChecked(position, true); 
     menulistView.setSelection(position); 
     setTitle(navMenuTitles[position]); 
    } else { 
     Log.e("MainActivity", "Error"); 
    } 
} 
+0

Fragment hinzufügen, anstatt – iAndroid

Antwort

0

Ändern Sie diese Zeile

fragmentManager.beginTransaction() 
       .replace(R.id.frame_content, fragment) 
       .addToBackStack(null) 
       .commit(); 

dieser

addToBackStack arbeitet mit add.

replace Funktion entfernt das vorherige Fragment und platziert das neue Fragment, so dass auf Ihrem Back-Stack immer nur ein Fragment vorhanden ist. Verwenden Sie also die Funktion add, um vorherige Fragmente im Stapel zu behalten.

+0

von ersetzen Wenn ich seine setzen hinzufügen back..then Haupt Fragment gehen werden Sie erneut auf Back-Button display..If .. App ist nicht exist..its Anzeige von FrameLayout – Kingraj

0

Dies sollte bei how to implement your own backstack

Hoffnung den Trick

public void onBackPressed() 
{ 
    FragmentManager fm = getActivity().getSupportFragmentManager(); 
    fm.popBackStack(); 
} 

wenn nicht, schauen Sie tun dies hilft :)

+0

während der Operation zurück ... Wenn Sie aus dem letzten Fragment nach Hause Fragment kommen ... in der ersten Fragment Aktionsleiste zeigt die letzte Fragment Titel – Kingraj

+0

@Kingraj Sie können Ihre Actionbar Titel aus Fragment ändern by '((MainFragmentActivity) getActivity()). setActionBarTitle (YOUR_TITLE);' –

+0

Wenn Sie es von Ihrer Aktivität abändern wollen, verwenden Sie dieses 'ge tSupportActionBar(). setTitle (Titel); ' –

0

// Ort dieser Code in Ihre MainActivity

@SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     Fragment fragment; 
     int id = item.getItemId(); 
     // String title = getString(R.string.app_name); 

     if (id == R.id.register) { 
      fragment=new Register(); 
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.mainframe,fragment); 
      ft.addToBackStack(null); 
      ft.commit(); 
     // title="Proviso Intech :: Registration"; 


     } else if (id == R.id.job) { 
      fragment=new job(); 
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.mainframe,fragment); 
      ft.addToBackStack(null); 
      ft.commit(); 
      // title="Proviso Intech :: Job Search"; 

     } 
     else if(id==R.id.home){ 
      fragment=new home(); 
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.mainframe,fragment); 
      ft.addToBackStack(null); 
      ft.commit(); 
     // title="Proviso Intech :: Home"; 


     } 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 

und das ist meine content_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:id="@+id/main" 

    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.intech.proviso.proviso.MainActivity" 
    tools:showIn="@layout/app_bar_main"> 


    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/mainframe"></FrameLayout> 
</RelativeLayout> 

// Hier ist die activity_main_drawer.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 

    > 

    <group android:checkableBehavior="single"> 
     <item 
      android:id="@+id/home" 
      android:icon="@drawable/common_full_open_on_phone" 
      android:checkable="true" 
      android:title="Home" /> 
     <item 
      android:id="@+id/register" 
      android:icon="@drawable/ic_menu_send" 
      android:title="Register" /> 
     <item 
      android:id="@+id/job" 
      android:icon="@drawable/ic_menu_manage" 
      android:title="Job Posts" /> 


    </group></menu> 
+0

welche id diese ID == R.id.job – Kingraj

+0

Dies ist die ID des Navigationselements