0

in meiner Navigationsleiste gibt es 5 Menüpunkte.Eine von ihnen ist über uns item.wenn ich auf dieses Element klicken, rufe ich AboutUsFragment und zeigen Sie es (sein Inhalt ist nur ein Text) .aber wenn ich klicken Sie auf BackPress, Fragment ist weg aber seine Texte bleiben auf meiner Aktivität.wie kann ich dieses Problem lösen? Worauf ist es bezogen ?!Probleme mit Fragment onBackPress

wählen Sie den Punkt der Navigationsleiste in meiner Tätigkeit:

public void selectItem(int position) { 

    Fragment fragment = null; 

    switch (position) { 
     case 0: 
      if (!Constants.login_state) { 
       fragment = new LoginFragment(); 
      } else { 
       Logout(); 
      } 
      break; 

     case 1: 
      Constants.filter = false; 
      Constants.gender = "-1"; 
      fragment = new HomeFragment(); 
      break; 

     case 2: 
      Constants.filter = false; 
      Constants.gender = "2"; 
      StyleFragment.SortingMode = 1; 
      fragment = new StyleFragment(); 
      break; 

     case 3: 
      Constants.filter = false; 
      Constants.gender = "1"; 
      StyleFragment.SortingMode = 1; 
      fragment = new StyleFragment(); 
      break; 

     case 4: 
      fragment = new AboutUsFragment(); 
      break; 

     default: 
      break; 
    } 

    if (fragment != null) { 
     FragmentTransaction fragmentManager = getSupportFragmentManager().beginTransaction(); 
     fragmentManager.replace(R.id.rl_container, fragment); 
     fragmentManager.addToBackStack(null); 
     fragmentManager.commit(); 
     mDrawerList.setItemChecked(position, true); 
     mDrawerList.setSelection(position); 
     setTitle(mNavigationDrawerItemTitles[position]); 
     mDrawerLayout.closeDrawer(Gravity.END); 
    } else { 
     Log.e("HomeActivity", "Error in creating fragment"); 
    } 
} 

und AboutUsFragment:

public class AboutUsFragment extends android.support.v4.app.Fragment{ 

private View view; 
private TextView about_us_fragment_text_view; 

public static AboutUsFragment newInstance() { 
    AboutUsFragment fragment = new AboutUsFragment(); 
    Bundle args = new Bundle(); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    view=inflater.inflate(R.layout.fragment_about_us, container, false); 
    Casting(view); 
    about_us_fragment_text_view.setText(getResources().getString(R.string.about_us)); 
    ChangeUIFont.ChangeFont((ViewGroup) view, getContext()); 

    return view; 
} 


//casting parameters 
public void Casting(View v){ 
    about_us_fragment_text_view= (TextView) v.findViewById(R.id.about_us_fragment_text_view); 
}} 

onBackPress in meiner Tätigkeit:

@Override 
public void onBackPressed() { 

    if (SearchOpened) { 
     lv_searchResult.setVisibility(View.GONE); 
     SearchOpened = false; 
    } else 
     super.onBackPressed(); 
} 

-------- ------------------------------- AfterSearching ------------------ -------------------------

Endlich fand ich die Lösung!

in meinem Fragment habe ich unten Code:

public static final String FRAGMENT_NAME = AboutUsFragment.class.getName(); 

und in meiner Tätigkeit, habe ich das Tag des Fragments, wenn ich es nennen, statt null!

fragmentManager.replace(R.id.rl_container, fragment,fragmentName); 
+0

bitte posten Sie Ihren Code –

+0

manchmal kommt es vor! nicht die ganze Zeit! –

+0

poste auch deinen 'onBackPressed' Code in deinem Activity and Fragment –

Antwort

1

diese Methode anstelle von onBackPressed

wenn Sie Symbolleiste haben dann hier ist meine Lösung, Typ unter der oncreate Methode unter Symbolleiste

assert getSupportActionBar() != null; 
    // getSupportActionBar().setHomeButtonEnabled(true); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

}

und diesen Code in Ihrer Manifest-Datei für Ihr Fragment gesetzt

<activity android:name=".yourCurrentFragment"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".whichActivityYouWantToGo" /> 
    </activity> 
+0

Sie lösten mein problem.really thx –

+0

Sie sind willkommen, ich bin froh, Entwickler zu helfen –

+0

können Sie darüber erklären? Ich war verwirrt über seinen Grund !! –

1

Versuchen Sie folgendes:

@Override 
public void onBackPressed() { 
    if (getFragmentManager().getBackStackEntryCount() == 0) { 
     super.onBackPressed(); 
    } else { 
     getFragmentManager().popBackStack(); 
    } 
Verwandte Themen