2011-11-02 36 views
10

Làm cách nào để phát hiện xem một hoạt động có tập trung hay không sau khi nhấn nút quay lại từ hoạt động của trẻ, và làm cách nào tôi có thể thực thi một số mã tại thời điểm đó?Làm thế nào để phát hiện xem có trở lại từ hoạt động của trẻ không?

+0

đặt logic của bạn vào onResume() của hoạt động gốc của bạn. vì vậy một khi U trở về từ con của bạn, nó sẽ thực hiện. –

Trả lời

3

Phương pháp bạn đang tìm kiếm có thể là phương pháp onResume bạn có thể thực hiện trong lớp mẹ của bạn;). Bạn phải biết rằng onResume cũng được gọi là lần đầu tiên bạn khởi chạy bất kỳ hoạt động nào. Nhìn vào vòng đời của một hoạt động: http://developer.android.com/images/activity_lifecycle.png

Kính trọng, câu trả lời

+1

Vì vậy, điều gì sẽ xảy ra nếu trên onResume tôi có một cập nhật chức năng? Ngày Hoạt động bắt đầu/thay đổi cấu hình đầu tiên, cập nhật cũng sẽ được gọi ngay cả khi nó không được dự định. –

+1

Câu trả lời này giúp ích như thế nào? 'onResume()' được gọi là cả khi hoạt động của mẹ lần đầu tiên khởi chạy, và khi bạn quay trở lại đó bằng cách nhấn nút quay lại từ một hoạt động con. Vậy làm thế nào bạn có thể phát hiện sự khác biệt? – LarsH

12

Một khả năng là bắt đầu hoạt động của con bạn với startActivityForResult() và triển khai onActivityResult() sẽ được gọi khi bạn quay trở lại từ hoạt động của trẻ.

4

js là chính xác, nhưng đây là một số mã sửa lỗi.

Khai báo mã yêu cầu như một hằng số ở phía trên cùng của hoạt động của bạn:

public static final int OPEN_NEW_ACTIVITY = 123456; 

Đặt này, nơi bạn bắt đầu hoạt động mới:

Intent intent = new Intent(this, NewActivity.class); 
startActivityForResult(intent, OPEN_NEW_ACTIVITY); 

Do something khi hoạt động kết thúc. Tài liệu cho thấy bạn sử dụng resultCode, nhưng tùy thuộc vào tình huống, kết quả của bạn có thể là RESULT_OK hoặc RESULT_CANCELED khi nhấn nút. Vì vậy, tôi sẽ bỏ nó ra.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == OPEN_NEW_ACTIVITY) { 
     // Execute your code on back here 
     // .... 
    } 
} 

Vì một lý do nào đó, tôi gặp khó khăn khi đưa điều này vào Phân đoạn. Vì vậy, bạn sẽ phải đặt nó trong Activity.

0

Bạn cũng có thể ghi đè cả phương thức onBackPressed() và phương thức onOptionsItemSelected() và đặt một số logic tại đó. Ví dụ: tôi đặt điều này vào BaseActivity của tôi mà tất cả các Hoạt động khác mở rộng từ:

@Override 
public void onBackPressed() { 
    // your logic 
    super.onBackPressed(); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (item.getItemId() == android.R.id.home) { 
     // your logic 
    } 
    return super.onOptionsItemSelected(item); 
} 
Các vấn đề liên quan