8
我有使用喜歡「清單片段 - >詳細片段」片段容器和兩個片段的活動片段可見性()真當不
private boolean isFirstFragmentAdded() {
return getSupportFragmentManager().findFragmentByTag("FIRST_FRAGMENT_TAG") != null;
}
private boolean isFirstFragmentVisible() {
return getSupportFragmentManager().findFragmentByTag("FIRST_FRAGMENT_TAG").isVisible();
}
private boolean isSecondFragmentAdded() {
return getSupportFragmentManager().findFragmentByTag("SECOND_FRAGMENT_TAG") != null;
}
private boolean isSecondFragmentVisible() {
return getSupportFragmentManager().findFragmentByTag("SECOND_FRAGMENT_TAG").isVisible();
}
private void addFirstFragment() {
firstFragment = new FirstFragment();
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, firstFragment, "FIRST_FRAGMENT_TAG").commit();
}
private void showFirstFragment() {
firstFragment = new FirstFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, firstFragment, "FIRST_FRAGMENT_TAG").commit();
}
private void addSecondFragment() {
secondFragment = new SecondFragment();
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, secondFragment, "SECOND_FRAGMENT_TAG").commit();
}
private void showSecondFragment() {
secondFragment = new SecondFragment(); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, secondFragment, "SECOND_FRAGMENT_TAG").commit();
}
private void refreshVisibleFragment() {
if (isFirstFragmentAdded() && isFirstFragmentVisible()) {
refreshFirstFragment();
} else if (isSecondFragmentAdded() && isSecondFragmentVisible()) {
refreshSecondFragment();
}
}
的事情是,即使我的第二個片段是可見的第一個總是返回isVisible() == true
,所以第二個永遠不會刷新。已經嘗試刪除,分離和沒有任何工作:第一個片段總是顯示爲添加和可見。還要在平板電腦和手機上測試它,發生同樣的事情。也許我錯過了一些東西,但不能正確理解,所以我們將不勝感激。 THX
當您添加第二個片段,您可以使用添加,或者您也試圖替換當前片段之後呢? – fasteque
isVisible():如果片段當前對用戶可見,則返回true。這意味着:(1)已被添加,(2)將其視圖附加到窗口,並且(3)未被隱藏。 檢查片段的隱藏狀態,如下所述:http://developer.android.com/reference/android/app/Fragment.html#onHiddenChanged(boolean)並調用isHidden()方法。 – fasteque
要替換片段,我問,如果它已被添加,如果它添加調用replace()如果不是調用add()。對於第一個片段,isHidden()的狀態爲false,而對用戶不可見,則可見片段爲第二個 – labreu