0

в моем навигационном ящике есть 5 пунктов меню. Один из них касается нас item.when я нажимаю на этот элемент, я вызываю AboutUsFragment и показываю его (его содержимое - просто текст). Но когда я нажмите наBackPress, фрагмент исчез, но его тексты остаются на моей работе. Как я могу решить эту проблему? С чем это связано?проблемы с фрагментом onBackPress

выберите пункт навигационного ящика в моей деятельности:

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"); 
    } 
} 

и 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 в моей деятельности:

@Override 
public void onBackPressed() { 

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

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

Наконец-то я нашел решение!

в моем фрагменте я добавил ниже код:

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

и в моей деятельности, я поставил метку фрагмента, когда я называю его, а не нулевой!

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

пожалуйста, напишите ваш код –

+0

иногда это происходит! не всегда! –

+0

также разместите свой код 'onBackPressed' в своей деятельности и фрагменте –

ответ

1

использовал этот метод вместо onBackPressed

если у вас есть панель инструментов, то здесь мое решение, типа под OnCreate метод ниже панели инструментов,

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

}

и установить этот код в ваш файл манифеста для вашего фрагмента

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

вы решили мою проблему. Действительно, THX –

+0

приветствую вас, я рад помочь разработчикам –

+0

вы можете объяснить об этом? Я запутался в причине! –

1

Попробуйте это:

@Override 
public void onBackPressed() { 
    if (getFragmentManager().getBackStackEntryCount() == 0) { 
     super.onBackPressed(); 
    } else { 
     getFragmentManager().popBackStack(); 
    } 
Смежные вопросы