2013-04-28 35 views
5

Ứng dụng của tôi hiển thị nhiều hình ảnh trên màn hình chính. Người dùng có thể xem thêm thông tin về sản phẩm bằng cách chạm vào hình ảnh. Đoạn màn hình chính bị ẩn và đoạn chi tiết sản phẩm sẽ hiển thị. Bằng cách nhấp vào phím quay lại, đoạn màn hình chính sẽ hiển thị trở lại.Tại sao onResume() được gọi trong các phân đoạn ẩn?

Các transacion đoạn được thực hiện như sau:

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

Tất cả mọi thứ hoạt động tốt, ngoại trừ nếu người dùng openes hộp thoại phần (tiêu chuẩn android phần mục đích) trong đoạn chi tiết sản phẩm và đóng hộp thoại bằng cách nhấn vào lưng Chìa khóa. Vì lý do nào đó, phương thức onResume trong đoạn màn hình chính (được ẩn) được gọi. tôi giải quyết vấn đề bằng cách thêm đoạn mã sau vào phương thức onResume trong đoạn màn hình chính:

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

này hoạt động tốt, nhưng câu hỏi vẫn là: Tại sao là onResume() được gọi trong đoạn ẩn chờ đến phiên mình sử dụng một hộp thoại chia sẻ trong một đoạn khác?

Trả lời

3

Phân đoạn ẩn vẫn theo dõi vòng đời của đoạn. Hãy xem sơ đồ từ documentation. User navigates backwards or the fragment is removed/replaced. Dẫn đến onDestroyView() được gọi, trong đó The fragment returns to the layout from the back stack, là nơi mà đoạn màn hình chính của bạn đang ngồi.

Các vấn đề liên quan