2014-06-23 14 views
9

Tôi có một vài hoạt động nói A, B, C. Hoạt động A bắt đầu B, B bắt đầu C và cứ thế. Trong ứng dụng của tôi, tôi đã đặt ngăn điều hướng cho phép người dùng quay trở lại hoạt động A. Khi người dùng quay trở lại hoạt động A Tôi đã vượt qua một số cờ không thực sự khởi động lại hoạt động nhưng chỉ cần tiếp tục lại.Tiếp tục hoạt động cũ bằng cách chuyển dữ liệu mới trong gói

intent = new Intent(activity, A.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
     | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

Bây giờ tôi đang cố gắng chuyển một số dữ liệu bằng gói.

bundle.putInt("selectedTab", FEATURED_COUPONS); 
    intent.putExtras(bundle); 

Nhưng trong hoạt động của tôi Gói luôn luôn rỗng.

if(bundle != null) 
{ 
    if(bundle.containsKey("selectedTab")) 
    { 
     int tab = bundle.getInt("selectedTab"); 
    } 
} 
+0

đăng mã nơi bạn nhận được gói và bắt đầu hoạt động A –

Trả lời

16

Bạn đang đi về những điều trong một cách sai lầm.

Nếu tất cả các bạn muốn làm là đặt một Integer thêm vào Intent extras sau đó không làm điều này ...

bundle.putInt("selectedTab", FEATURED_COUPONS); 
intent.putExtras(bundle); 

Từ các tài liệu cho putExtras(Bundle extras) ...

Add một tập hợp dữ liệu mở rộng cho mục đích. Các khóa phải bao gồm tiền tố gói, ví dụ: ứng dụng com.android.contacts sẽ sử dụng các tên như "com.android.contacts.ShowAll".

Thay vào đó chỉ cần sử dụng ...

intent.putExtra("selectedTab", FEATURED_COUPONS); 

Đây không phải là nguyên nhân thực sự của vấn đề của bạn tuy nhiên. Như Sumit Uppal đề cập, bạn nên thực hiện onNewIntent(Intent intent) trong Activity A. Sau đó bạn có thể sử dụng để thiết lập các 'hiện tại' Intent là mới Intent ...

@Override 
protected void onNewIntent(Intent intent) { 
    if (intent != null) 
     setIntent(intent); 
} 

Sau đó, trong onResume() bạn có thể sử dụng ...

Intent intent = getIntent(); 

... và sau đó nhận được Bundle từ đó Intent.

+0

Một chút trễ, nhưng tôi đã vấp phải giải pháp này ngay bây giờ, cuối cùng đã kết thúc sự đau đớn của tôi sau 3 giờ tìm kiếm !!! – trueicecold

+1

CẢM ƠN BẠN !!!! hoàn toàn quên về onNewIntent – reidisaki

+0

Đó chỉ là những gì tôi đang tìm kiếm. Cảm ơn nhiều! – txedo

0

Nếu bạn muốn truyền dữ liệu đến một hoạt động đã tạo ra bạn phải sử dụng startActivityForResult và ghi đè onActivityResult phương pháp trong hoạt động A.

Thay vào đó, nếu bạn tạo hoạt động một lần nữa tôi khuyên bạn nên sử dụng kết thúc() trong hoạt động, sau phương thức startActivity.

2

Tôi nghĩ rằng bạn nên làm "if (bó! = Null)" nhiệm vụ trong onNewIntent (Ý định) phương pháp

+0

là phương pháp onNewIntent (intent) trên ứng dụng nhận hoặc ứng dụng gửi? – LizG

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