2013-10-16 20 views
8

ben "listesinde fragmanı -> detay parçası" gibi kullanılan bir parça kap ve iki parçalarıyla bir Aktivite olduğundaFragment isVisible() doğru değildir

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(); 
    } 
} 

şey benim İKİNCİ parçası görünür olmasıdır bile İLK 1 her zaman isVisible() == true'u döndürür, böylece ikincisi hiçbir zaman yenilenmez. Zaten çıkarmayı dene, çıkar ve hiçbir şey işe yaramaz: İlk parça her zaman eklenmiş ve görülebilir olarak görünür. Ayrıca tablet ve telefonlarda test edin ve aynı şey olur. Belki bir şeyi özlüyorum ama doğru anlayamıyorum, bu yüzden herhangi bir yardım takdir edilecektir. Thx

+0

ayarladıktan sonra fragment.isMenuVisible() deneyin? – fasteque

+0

isVisible(): Parça şu anda kullanıcı tarafından görünse doğrudur. Bu, şu anlama gelir: (1) eklendi, (2) pencereye bir görünüm eklendi ve (3) gizlenmedi. Burada açıklandığı gibi parçanın gizli durumunu kontrol edin: http://developer.android.com/reference/android/app/Fragment.html#onHiddenChanged(boolean) ve isHidden() yöntemini çağırmak. – fasteque

+0

Parçayı değiştirmek için, önceden eklenip eklenmediğini sorar, eğer eklenmişse, (eğer) arama yapmazsanız() değiştirin. IsHidden() öğesi, kullanıcı tarafından görülemezken Birinci parça için yanlıştır, görünen bölüm ikincidir – labreu

cevap

0

yerine ikinci parçasını eklerken, eklentiyi kullanın veya aynı zamanda mevcut parçasını değiştirerek denedim fragment.setMenuUserVisibility(false)

+0

yalnızca destek grubunda çalışır – desgraci