6

Nếu tôi khởi chạy DialogFragment từ một hoạt động, điều gì xảy ra khi tôi đóng DialogFragment? Hoạt động có đi qua trạng thái onResume không? Hoặc là cuộc gọi như bất kỳ cuộc gọi java bình thường để dòng tiếp theo không bao giờ được thực hiện cho đến khi DialogFragment bị đóng?DialogFragment ảnh hưởng đến vòng đời của hoạt động gọi điện thoại

Giả sử phương pháp để tung ra đoạn của tôi là

private void launchFragment(){ 
    ConfirmationDialog confirm = new ConfirmationDialog(); 
    confirm.show(getSupportFragmentManager(), "confirm"); 
    doMoreStuff(); 
} 

Vì vậy, câu hỏi của tôi có hai phần:

  1. Khi được doMoreStuff() gọi là? Trước hoặc sau khi tôi đóng đoạn để quay lại hoạt động gốc?
  2. Sau khi tôi đóng đoạn để quay lại hoạt động gốc, hoạt động của phụ huynh có thông qua onResume hay không: vì vậy nếu tôi kiểm tra một số trường được thay đổi bởi đoạn, tôi có thể làm việc trênResume dựa trên trạng thái của lĩnh vực:

Như trong ví dụ sau:

@Override 
public void onResume() { 
    super.onResume(); 
    if(dialogFragmentChangedThis){ 
     workSomeMore(); 
    } 
} 

đoạn được đưa ra với

setStyle(STYLE_NO_FRAME, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); 

để nó trong chế độ toàn màn hình.

Trả lời

5

Khi nào doMoreStuff() được gọi? Trước hoặc sau khi tôi đóng đoạn để quay lại hoạt động gốc?

DialogFragment 's show() phương pháp chỉ phạm FragmentTransaction, mà sẽ được thực hiện đồng bộ, vì vậy bất kỳ phương pháp mà sau đó sẽ được thực hiện ngay lập tức.

Sau khi tôi đóng đoạn để trở về hoạt động phụ huynh, không hoạt động cha mẹ đi qua onResume

Không, nó không, vì bạn Activity là trong foreground tất cả các thời gian, khi có không có khác Activities tham gia.

Thông thường, bạn sẽ sử dụng Callback người nghe với DialogFragment s như bạn làm với đơn giản Fragment s, bằng cách thực hiện các Callback trong Activity của bạn và bằng cách gọi phương pháp Activity của bạn thông qua giao diện mà khi bạn muốn vượt qua một kết quả của một hành động đã xảy ra trong DialogFragment.

+0

Tôi đã nghĩ đến việc triển khai giao diện gọi lại tùy chỉnh, nhưng tôi đã hy vọng có một cách dễ dàng hơn sau đó; sự ủng hộ heo con như vậy trên vòng đời. –

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