2013-10-18 13 views
5

tôi gọi một hoạt động cho kết quả:Android, kết thúc() đóng INSEAD ứng dụng hoạt động

private static final int CODE_LOGIN = 0; 
private static final int CODE_DETAILS = 1; 

private void callDetailsActivity() { 
    Intent switchToDetailsActivity = new Intent(getApplicationContext(), Details.class); 
    switchToDetailsActivity.putExtra(TAG_ID, details.get(TAG_ID)); 
    startActivityForResult(switchToDetailsActivity, CODE_DETAILS); 
} 

Bây giờ trong tôi Details.class tôi gọi để trở lại hoạt động theo thời gian:

@Override 
public void onBackPressed() { 
    setResult(RESULT_OK); 
    super.onBackPressed(); 
} 

Và sau đó tôi onActivityResult()

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
     if (requestCode == CODE_LOGIN) { 
       // This is for my other Activity, where the "return" works 
     } 
    } 
    updateOffers(); 
} 

Nhưng nỗi lo sợ khi quay trở lại lớp trước của tôi, ứng dụng sẽ bị đóng mà không có bất kỳ nhật ký lỗi nào. Khi tôi bấm nút Home để đi đến ứng dụng trước đó của tôi, tôi có thể đi đến ứng dụng của tôi và sau đó tôi đang ở trong hoạt động trước đây của tôi, nhưng đó chắc chắn không phải là cách nó được cho là làm việc.

Tôi cũng đã cố gắng không thay đổi onBackPressed() hoặc chỉ cần viết finish() vào onBackPressed(), nhưng không có gì hiệu quả.

tôi chưa thiết android:noHistory="true"

Với Hoạt động khác của tôi (trong đó sử dụng excatly cùng mã), nó hoạt động một cách hoàn hảo (CODE_LOGIN).

Ai đó có thể giúp tôi không?

+0

Bạn có thể cũng chia sẻ mã cho "onActivityResult" của bạn trong hoạt động đầu tiên? –

+0

cố gắng thêm super.onBackPressed ở dưới cùng của onPressPressed() và xóa các tham số khỏi Intent() mới. – Vijju

+0

Bạn có gọi 'finish()' sau 'startActivityForResult' không? – Doomsknight

Trả lời

1

Thay đổi setResult(RESULT_OK, returnToOffers); thành setResult(RESULT_OK); và loại bỏ ý định returnTo Offer. Tôi cũng khuyên bạn nên thay thế finish() bằng super.onBackPressed() để tương thích trong tương lai.

Giống như trong Android Lik-M-Aid (hoặc bất kỳ phiên bản tiếp theo), họ quyết định thực hiện một số hiệu ứng ánh sáng đỏ đặc biệt khi người dùng hủy hoạt động bằng nút quay lại, bạn sẽ không phải cập nhật ứng dụng để hỗ trợ nó.

+0

Tôi đã thay đổi mã như bạn đã nói, nhưng nó vẫn không hoạt động. – user1053864

+0

Bạn có thể thêm tệp kê khai của mình vào câu hỏi và chỉ ra hoạt động nào không hoạt động chính xác không? Vấn đề có thể ở đó. – Tenfour04

2

Có thể bạn đã khai báo hoạt động đầu tiên là android: noHistory = "true" trong AndroidManifest?

2

Tôi đã tìm thấy lỗi của mình. Một nơi nào đó sâu trong mã của tôi, tôi vô tình được gọi là kết thúc(), vì vậy trong toàn cầu, tôi gọi là finish() hai lần, dẫn đến việc đóng ứng dụng.

Cảm ơn bạn giúp đỡ và lời khuyên để sử dụng super.onBackPressed()

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