2013-10-16 61 views
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

+0

當您添加第二個片段,您可以使用添加,或者您也試圖替換當前片段之後呢? – fasteque

+0

isVisible():如果片段當前對用戶可見,則返回true。這意味着:(1)已被添加,(2)將其視圖附加到窗口,並且(3)未被隱藏。 檢查片段的隱藏狀態,如下所述:http://developer.android.com/reference/android/app/Fragment.html#onHiddenChanged(boolean)並調用isHidden()方法。 – fasteque

+0

要替換片段,我問,如果它已被添加,如果它添加調用replace()如果不是調用add()。對於第一個片段,isHidden()的狀態爲false,而對用戶不可見,則可見片段爲第二個 – labreu

回答

0

嘗試 fragment.isMenuVisible()設置fragment.setMenuUserVisibility(false)

+0

只適用於支持組 – desgraci