2012-01-03 14 views
5

Cần giúp đỡ trong việc tìm hiểu ngoại lệ này:Cố gắng hiểu "Calling startActivity từ bên ngoài của một bối cảnh Hoạt động"

system_log_all 11-14 11:52:28.540 E/AndroidRuntime(31615): FATAL EXCEPTION: main 
system_log_all 11-14 11:52:28.540 E/AndroidRuntime(31615): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 
system_log_all 11-14 11:52:28.540 E/AndroidRuntime(31615): at android.app.ContextImpl.startActivity(ContextImpl.java:689) 
system_log_all 11-14 11:52:28.540 E/AndroidRuntime(31615): at android.content.ContextWrapper.startActivity(ContextWrapper.java:258) 
system_log_all 11-14 11:52:28.540 E/AndroidRuntime(31615): at android.content.ContextWrapper.startActivity(ContextWrapper.java:258) 

ý nghĩa từ 'bên ngoài của một bối cảnh Hoạt động' là gì? Tôi không nghĩ tôi gọi 'startActivity' từ ngữ cảnh 'Application', vậy nghĩa là gì bên ngoài một Context hoạt động?

Cảm ơn bạn.

+1

Dường như bạn đang cố gắng gọi startActivity (..) từ một lớp không mở rộng Lớp hoạt động. – kosa

Trả lời

5

Như nhận xét của @thinksteep có vẻ như bạn đang cố gắng gọi số startActivity() từ một nội dung khác, sau đó là Activity.

Có thể bạn đang cố gắng khởi động hoạt động từ một số Service?

Đây là những gì bạn đang cố gắng làm bạn nên làm theo lời khuyên trong cảnh báo và thêm FLAG_ACTIVITY_NEW_TASK vào cờ ý định của bạn.

Lý do cảnh báo như tôi thấy đó là bạn đang cố bắt đầu một thành phần giao diện người dùng từ một thứ không phải là thành phần giao diện người dùng. Hầu hết thời gian này không muốn bạn muốn từ một góc nhìn khả năng sử dụng.

Exceptions có thể là các cuộc gọi đến, vv

8

Để clearify câu trả lời trước đó, bạn cần phải thêm dòng sau vào mục đích trước khi bắt đầu hoạt động:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Sau đó, Android sẽ cho phép bạn bắt đầu các hoạt động mà nó vui lòng bạn.

+3

Nhưng nếu bạn thực sự muốn tiếp tục hoạt động cũ thay vì tạo một hoạt động mới thì sao? Nếu tôi muốn sử dụng FLAG_ACTIVITY_BROUGHT_TO_FRONT thì sao? Đây có phải là có thể làm gì? –

+0

cảm ơn người đàn ông :) –

2

Tôi biết có một chút phản hồi trễ .. Nhưng bây giờ tôi đã xuất phát từ cùng một vấn đề. vì vậy tôi muốn đăng bài này lên công chúng, nó có thể hữu ích cho những người khác đang ở trong tình trạng tương tự. Tôi vừa sử dụng Myclassname.this thay vì getApplicationContext();.

+1

Myclassname sẽ phải là một bối cảnh cho rằng để làm việc. –

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