2013-04-28 6 views
5

Uygulamam, ana ekranda çok sayıda resim gösteriyor. Kullanıcı, bir ürüne dokunarak bir ürün hakkında daha fazla bilgi görüntüleyebilir. Ana ekran parçası gizlenir ve ürün detayı parçası görünür hale gelir. Arka tuşa tıklayarak, ana ekran parçası tekrar görünür hale gelir.OnResume() neden gizli Fragmanlar olarak adlandırılıyor?

@Override 
public void showProduct(Product p, boolean isParentTabbed) { 
    FragmentManager fm = getSupportFragmentManager(); 
    FragmentTransaction transaction = fm.beginTransaction(); 

    // the new fragment 
    Fragment mFragment = new ProductDetailFragment(p,isParentTabbed); 

    //hide main screen fragment and add product detail fragment 
    transaction.hide(currentlyOpenedFragment); 
    transaction.add(android.R.id.content,mFragment); 

    //set new fragment as current "on top" fragment 
    currentlyOpenedFragment = mFragment; 

    //start animation 
    transaction.setCustomAnimations(R.anim.slide_in_bottom, R.anim.slide_out_top); 

    transaction.addToBackStack(null); 
    transaction.commit(); 
} 

Herşey kullanıcı ürün detay fragmanında payı iletişim (standart android payı niyet) openes eğer dışında çalışıyor ve arka tıklayarak pencereyi kapatır: fragman transacion olarak uygulanmaktadır

izler tuşuna basın. Bazı nedenlerle, ana ekran parçasındaki (gizli olan) onResume yöntemi çağrılır. Bu iyi çalışır, ancak

super.onResume(); 
    if(this.isHidden()){ 
     Log.d("tab","dont resume tab0fragment because it is hidden"); 
     return; 
    } 

soru kalır: Ben ana ekran fragmanında onResume yöntemine aşağıdaki kodu ekleyerek sorunu çözdü gizli fragmanda denilen onResume() Neden kullanıcı kapatır Başka bir parçadaki paylaşım diyaloğu

cevap

3

Gizli parçalar hala parça ömrünü takip eder. Akış şemasına documentation'dan bir göz atın. User navigates backwards or the fragment is removed/replaced. Ana ekran parçanızın oturduğu The fragment returns to the layout from the back stack, adresinde onDestroyView() çağrılır.