2016-07-27 2 views
1

У меня есть меню с двумя фрагментами. когда я выбираю второй фрагмент, я могу перейти к третьему фрагменту с помощью кнопки.Фрагмент перекрывается другим, когда возвращается

MainActivity

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close); 
    mDrawerLayout.setDrawerListener(drawerToggle); 
    drawerToggle.syncState(); 

    getSupportActionBar().setTitle("demo"); 

    mSelectedId = savedInstanceState == null ? R.id.aboutConference : savedInstanceState.getInt("SELECTED_ID"); 
    itemSelection(mSelectedId); 

} 

private void setToolbar() { 
    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    if (toolbar != null) { 
     setSupportActionBar(toolbar); 
    } 
} 

private void initView() { 
    mDrawer = (NavigationView) findViewById(R.id.main_drawer); 
    mDrawer.setNavigationItemSelectedListener(this); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
} 

private void itemSelection(int mSelectedId) { 


    switch (mSelectedId) { 

     case R.id.aboutConference: 
      mDrawerLayout.closeDrawer(GravityCompat.START); 
      fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
      fragmentTransaction.replace(R.id.main_container, new FirstFragment()); 
      fragmentTransaction.commit(); 

      break; 


     case R.id.aboutDeveloper: 
      mDrawerLayout.closeDrawer(GravityCompat.START); 
      fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
      fragmentTransaction.replace(R.id.main_container, new SecondFragment()); 
      fragmentTransaction.commit(); 
      break; 

    } 

} 

Второй фрагмент

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = 
       inflater.inflate(R.layout.second_fragment, container, false); 

     Button button = (Button)view.findViewById(R.id.button); 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction(); 
       fragmentTransaction.replace(R.id.main_container, new ThirdFragment()); 
       fragmentTransaction.addToBackStack(null); 
       fragmentTransaction.commit(); 
      } 
     }); 
     return view; 
    } 

Когда я нажимаю BackButton, он работает правильно.

second fragment

Но если я перейти на третий фрагмент, выберите первый фрагмент в меню и нажмите кнопку BackButton, третий фрагмент перекрывает первый фрагмент

problem

Как я могу решить эту проблему?

ОБНОВЛЕНИЕ: я не хочу, чтобы я мог вернуться от первого фрагмента к третьему, когда я нажму кнопку «Назад».

+0

setBackground в родительском теге XML макет каждого фрагмента. Желательно с белым цветом. – Shaishav

+0

Установите свой фон в рамке в белом цвете –

+0

Я не хочу, чтобы я мог вернуться с первого фрагмента на третий, когда нажимаю кнопку «Назад». –

ответ

0

Как Shaishav и vishal сказали вам нужно положить color ваше родительское представление фрагмента.

oelse необходимо, чтобы Override нажал метод и убедитесь, что вы удалите предыдущий элемент из стека.

Чтобы проверить, если элемент существует в стеке или не попробовать следующий код

fragmentManager1.getBackStackEntryCount() 
Смежные вопросы