2015-09-11 4 views
0

В моем приложении я использую макет, содержащий два фрагмента-заполнителя - «текущий» фрагмент и фрагмент «overlay», который я использую для замены разных представлений. Мне интересно, как, когда я использую свой оверлейный фрагмент, отключить базовый фрагмент. Вот мой макетОтключить фрагмент, когда другой накладывается?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<FrameLayout 
    android:id="@+id/current_fragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
</FrameLayout> 

<FrameLayout 
    android:id="@+id/overlay_fragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
</FrameLayout> 

</RelativeLayout> 

Я заменяю эти фрагменты, используя переход фрагмента.

ответ

0

Одним из решений может быть использование метода onHiddenChanged в фрагменте.

В вашем фрагменте, переопределить это следующим образом:

public void onHiddenChanged (Boolean hidden){ 
    super.onHiddenChanged (hidden); 
    ((FragmentObserver)getActivity()).onFragmentHiddenChanged(this, hidden); 
} 

Затем вы используете интерфейс для «отправить» информацию обратно в вашей деятельности.

В вашей деятельности:

public void onFragmentHiddenChanged (Fragment pFragment, Boolean pHidden){ 
    FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
    transaction.remove(pFragment).commit(); 
} 

Позвольте мне знать, если это работает, потому что я не пробовал.

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