2010-03-16 15 views
5

tôi bắt đầu Android Market thông qua ứng dụng của tôi để tìm kiếm các sản phẩm tương tự sử dụng mã này:Hiển thị ứng dụng chính menu/màn hình chủ khi trở về app sau khi bắt đầu một Hoạt động bên ngoài/Ý định

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://market.android.com/search?q=pub:\"some txt\"")); 
c.startActivity(intent); 

này hoạt động tốt để hiển thị các sản phẩm tương tự. Tuy nhiên, nếu tôi nhấn nút home trong khi trên thị trường, khi tôi mở lại ứng dụng nó vẫn hiển thị kết quả thị trường. Tôi muốn vào menu chính trong trường hợp này.

Có giải pháp nào không?

Trả lời

15

Xin lỗi, FLAG_ACTIVITY_NO_HISTORY có lẽ không phải là giải pháp đúng. Lưu ý ngữ nghĩa của nó - hoạt động không xuất hiện trong lịch sử. Vì vậy, nếu người dùng chạm vào một trong những thứ trong đó để đi đến hoạt động tiếp theo, sau đó nhấn lại, họ sẽ không quay trở lại hoạt động trước đó (nhưng trước đó). Đây là điều hiếm khi bạn muốn.

Tệ hơn nữa, nếu họ đi đến hoạt động thứ hai từ hoạt động thị trường, bấm nhà và quay lại ứng dụng của bạn, hoạt động thứ hai vẫn sẽ ở đó (nó đang tự lưu giữ trong lịch sử).

Cờ chính xác cho trường hợp này là FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET.

+0

Nó đã giúp tôi rất nhiều. +1 cho những nỗ lực của bạn. – Vivek

0

Đây không phải là vấn đề.

Khi bạn nhấn vào nhà trên ứng dụng Market, ứng dụng sẽ không bị đóng, vừa bị tạm dừng. Vì vậy, khi bạn mở nó một lần nữa bạn tiếp tục nó. Kiểm tra Android activity's lifecycle.

+0

Có vấn đề vì đây không phải là hành vi mà người dùng mong đợi. Làm thế nào về bạn đọc: http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET – Fernwilter

10

Nếu bạn thêm cờ FLAG_ACTIVITY_NO_HISTORY vào mục đích, nó sẽ không được giữ trên ngăn xếp lịch sử. Khi người dùng điều hướng trở lại ứng dụng của bạn, hoạt động cuối cùng đã hiển thị trước khi bạn khởi chạy thị trường sẽ được hiển thị.

Intent intent = new Intent(Intent.ACTION_VIEW, 
    Uri.parse("http://market.android.com/search?q=pub:\"some txt\"")); 

c.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
c.startActivity(intent); 

Edit:hackbod là đúng: FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET là một phù hợp tốt hơn cho những gì bạn cần.

+0

Điều này đã hiệu quả. Cảm ơn bạn rất nhiều –

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