2013-04-11 31 views
8

Tôi muốn biết liệu khi người dùng nhấn "Có" trên hộp thoại cảnh báo và điều này bị loại bỏ, sự kiện đó sẽ thực hiện phương thức onResume của hoạt động mà người dùng đang ở.Gọi phương thức onResume sau khi cảnh báo được loại bỏ trong Android?

Vì tôi có "Sạch "nút yêu cầu người dùng nếu anh ta thực sự chắc chắn làm sạch tất cả các trường của biểu mẫu (hoạt động) để vẽ lại hoạt động với các trường trống .. Biểu mẫu được tạo động, vì vậy tôi không biết trước các phần tử trong GUI để đặt chúng trống ...

Xin lỗi vì tiếng anh xấu của tôi !!

Xin cảm ơn và chúc mừng!

+0

nếu bạn muốn phát hiện khi người dùng đã làm điều gì đó bạn có thể sử dụng boolean sẽ sai khi bắt đầu và đúng trên nhấp chuột tích cực của nút? –

Trả lời

15

Không chắc nếu đây là phương pháp mà nên được thực hiện, nhưng bạn sẽ có thể làm những gì tôi nghĩ rằng bạn đang yêu cầu. Nếu vì lý do nào đó, đây là những gì bạn muốn đạt được.

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("Do you want to clean?") 
     .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
     { 
     public void onClick(DialogInterface dialog, int id) 
     { 
      dialog.dismiss(); 
      ((ActivityName) appContext).onResume(); 
     } 
     }) 
     .setNegativeButton("No", new DialogInterface.OnClickListener() 
     { 
     public void onClick(DialogInterface dialog, int id) 
     { 
      dialog.dismiss(); 
     } 
     }); 
    builder.create().show(); 
} 

Bạn sẽ thực sự muốn được gọi chức năng làm sạch của bạn thay bất cứ điều gì giống như một cuộc gọi vòng đời trên là một thành công trong khi làm gì trên một thất bại.

Một cách khác để tiếp cận điều này là đưa hoạt động hiện tại trở lại mặt trước bằng cờ.

Intent intent = new Intent(this, CurrentlyRunningActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(intent); 

Mà cũng sẽ cung cấp cách gọi cho hoạt động chính của bạn mà không trực tiếp tham chiếu cuộc gọi onResume(), như được chỉ ra không phải là cách tiếp cận phù hợp; tuy nhiên, tôi muốn trả lời trực tiếp câu hỏi khi được hỏi.

+4

gọi 'onResume' theo cách thủ công là * hoàn toàn không có cách nào * –

0

AFAIK Điều này là không thể vì để hiển thị hộp thoại, hoạt động đã vượt qua trạng thái onResume. Kiểm tra các trang sau để biết thêm về chu kỳ sống trên một ứng dụng Android (nó thực sự giúp tôi hiểu rõ hơn):

App lifecycle

+0

Vì vậy, những gì bạn đang nói là khi cảnh báo trên màn hình, nó không khiến hoạt động ở chế độ nền? nó vẫn còn trên nền trước? –

+0

@alois.wirkes Đó là một câu hỏi hay mà tôi không chắc chắn. Tuy nhiên tôi nghĩ bạn nên xem xét câu trả lời của CodeMagic. Bạn có lẽ không nên vẽ lại bố trí để xóa nội dung, nhưng nên sử dụng 'setText()'. Chỉ cần có nút yes của hộp thoại gọi phương thức làm sạch bạn mong muốn. – TronicZomB

0

Nếu bạn không chắc chắn khi onResume được gọi là, thêm một bản ghi vào phương thức onResume.

1

Để xem liệu phương pháp có được gọi là bạn có thể đặt điểm ngắt tại phương thức, onResume() hay không, để xem điều gì xảy ra. Nếu bạn không quen thuộc với Vòng đời Acitvity thì việc làm này sẽ giúp bạn làm quen với nó và đọc tài liệu được cung cấp.

Bây giờ, tôi không nghĩ bạn nên vẽ lại toàn bộ số layout chỉ để xóa một số Views. Nó sẽ hiệu quả hơn, theo ý kiến ​​của tôi, để chỉ cần thiết lập lại tất cả các lĩnh vực bằng cách sử dụng setText() hoặc phương pháp khác cho bất cứ điều gì bạn cần khi người dùng nhấp vào "ok" hoặc bất cứ điều gì. Bạn có thể sử dụng invalidate() nếu bạn cần phải vẽ lại một số Views

Tôi cũng khuyên bạn nên xem

Google I/O-Turbo Charge Your UI

Activity LifeCycle < - rất quan trọng để hiểu

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