2014-12-15 3 views
1

после некоторых исследований я необходимо реализовать скрытие() и шоу системы() в моем приложении,Как работает система hide()/show()? фрагмент андроида

теперь я делаю так:

Когда я выбираю какой-то фрагмент, чтобы показать на моем меню, я создаю с новым Fragment(), затем я использую beginTransaction(). replace(), чтобы заменить содержимое на моем FrameLayout этим новым фрагментом ...

Но мне не нужно воссоздавать этот фрагмент, и я думаю , используйте систему hide() и show(), но как это реализовать? как работают hide() и show()? мне нужно использовать backstack и так?

спасибо !!

ответ

1

Я думал, что попробовал механизм hide/show от FragmentManager. Ниже приведен один сегмент моих исходных кодов, реализующий это. Посмотри: Этот метод, чтобы скрыть все видимые и ненулевые Фрагменты:

private void hideAllFrags(FragmentTransaction fragmentTransaction) { 
    for (String name : fragNames) { 
     Fragment fragment = fragmentManager.findFragmentByTag(name); 
     if (fragment != null && !fragment.isHidden()) { 
      fragmentTransaction.hide(fragment); 
     } 
    } 
} 

И затем, основной метод здесь:

{ 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    hideAllFrags(fragmentTransaction); 
    switch (v.getId()) { 
     case R.id.button1: 
      if (fragA == null) { 
       fragA = new FragA(); 
       fragmentTransaction.add(R.id.frag_container, fragA, fragNames[0]); 
       fragmentTransaction.addToBackStack(fragNames[0]); 
      } else { 
       fragmentTransaction.show(fragA); 
      } 
      break; 
     case R.id.button2: 
      if (fragB == null) { 
       fragB = new FragB(); 
       fragmentTransaction.add(R.id.frag_container, fragB, fragNames[1]); 
       fragmentTransaction.addToBackStack(fragNames[1]); 
      } else { 
       fragmentTransaction.show(fragB); 
      } 
      break; 
     default: 
      break; 
    } 
    fragmentTransaction.commit(); 
} 

Я надеюсь, что это поможет;)

+0

PS: если вы обнаруживаете продолжительность жизни двух фрагментов, вы бы обнаружили, что при вызове hide/show не используются методы жизни фрагмента. Это означает, что метод hide/show просто делает корневой вид относительного фрагмента ушедшим (невидимым)/видимым. – SilentKnight

Смежные вопросы