SlidingTabLayout: заменить фрагментом

У меня такая ситуация:

  • Linear Layout
    • ToolBar
    • SlidingTabLayout
    • ViewPager
    • FrameLayout

Изначально я добавляю только фрагмент в FrameLayout, и все работает. Затем я удаляю этот фрагмент, создаю новый адаптер и привязываю адаптер к SlidingTabLayout. Все снова работает, но теперь мне нужно установить для видимости вкладки значение false, и я делаю это с помощью

slidingTabLayout.setVisibility(View.GONE);

но мне также нужно заменить текущий вид новым фрагментом. Обычно я делаю это с помощью:

getFragmentManager().replace(parent, newFragment);

но теперь я не могу этого сделать, потому что getFragmentManager (). replace (ViewPager, newFragment); не работает. Так как я могу это сделать? И если возможно, могу ли я добавить замену ViewPager в backstack?


person helloimyourmind    schedule 28.05.2015    source источник


Ответы (1)


Я нахожу решение. Я сделал следующее обновление своего макета:

  • Linear Layout
    • ToolBar
    • Linear Layout (id: parentScroll)
      1. SlidingTabLayout
      2. ViewPager
    • Макет кадра (идентификатор: родительский)

Поэтому, когда мне нужно скрыть все вкладки и ViewPager, чтобы расширить новый фрагмент в макете кадра, я делаю следующее:

 parentScroll.setVisibility(View.GONE);
 MyFragment myFragment= new MyFragment ();
 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 transaction.add(R.id.parent, myFragment, "MYTAG");
 transaction.commit();

В onBackPressed этого нового фрагмента:

 MyFragment myFragment= (MyFragment) getSupportFragmentManager.findFragmentByTag("MYTAG");
 if (myFragment!= null && myFragment.isVisible()) {
     parentScroll.setVisibility(View.VISIBLE);
     getSupportFragmentManager().beginTransaction().remove(myFragment).commit();
 }
person helloimyourmind    schedule 30.05.2015