Фрагмент onCreateView Вызывается, но не отображается - PullRequest
0 голосов
/ 25 октября 2018

У меня есть Активность с фрагментом A. Когда я щелкаю в каком-либо виде, мне нужно показать другой фрагмент B.

Я показываю фрагмент (A) следующим образом.

supportFragmentManager
    .beginTransaction()
    .replace(R.id.container, FragmentA(), "FragmentA")
    .commit()

Вот как я показываю Фрагмент (B)

supportFragmentManager.beginTransaction()
    .add(R.id.container, FragmentB(), "FragmentB")
    .addToBackStack("FragmentA")
    .commit()

Но иногда , когда я звоню много раз showFragmentB() -> popBackStack() Фрагмент (B) перестает показываться, но вв то же время я вижу в журналах, что onCreateView вызывается, но фрагмент не отображается

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

В ваш фрагментДеятельность добавьте

@Override
public void onBackPressed(){    
if (supportFragmentManager.getBackStackEntryCount > 0) {        
    fm.popBackStack();
} else {        
    super.onBackPressed();  
}
}
0 голосов
/ 25 октября 2018

попробуйте

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
YOUR_FRAGMENT fragment3 = new YOUR_FRAGMENT ();
fragmentTransaction.replace(R.id.content_frame, fragment3);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

, затем, если вам нужно вернуться, нажмите

@Override
public void onBackPressed() {

    if (getFragmentManager().getBackStackEntryCount() == 1) {
        moveTaskToBack(false);
    }else {
        super.onBackPressed();
    }
}
0 голосов
/ 25 октября 2018

Вы должны сделать это вместо этого .. Замените свой код ниже ..

supportFragmentManager.beginTransaction()
.add(R.id.container, FragmentB(), "FragmentB")
.addToBackStack("FragmentA")
.commit()

С этим кодом .. Это работает

supportFragmentManager
    .beginTransaction()
    .replace(R.id.container, FragmentB(), "FragmentB")
    .addToBackStack("FragmentA")
    .commit()
...