Ứ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?