2012-03-15 25 views
12

Tôi đang cố gắng xử lý các ngoại lệ trong ứng dụng của mình. Tôi đang cố gắng đăng nhập ngoại lệ, sau đó sử dụng Bánh mì nướng để cảnh báo cho người dùng rằng đã xảy ra sự cố. Tôi có công việc này trong tất cả các hoạt động mở rộng của lớp tôi.ngữ cảnh Android bên ngoài lớp Hoạt động

Tuy nhiên, trong bất kỳ lớp nào không mở rộng hoạt động, tôi không thể sử dụng phương pháp bánh mì nướng vì tôi không thể tải ngữ cảnh hiện tại. Có cách nào đơn giản để giải quyết vấn đề này hay nên tất cả Hoạt động mở rộng của lớp tôi?

+0

Cụ thể những gì các cấu trúc khác là bạn làm việc với ? Nhiều người trong số họ hoặc có một bối cảnh đã hoặc có được một bối cảnh được truyền cho họ tại một số điểm. – FoamyGuy

+0

Bạn có thể đặt ngữ cảnh thành một trường thành viên và đặt trong hàm tạo. Nhưng điều này có thể dẫn đến rò rỉ bộ nhớ, vì vậy hãy sử dụng cẩn thận (tránh tham chiếu tĩnh đến Ngữ cảnh). – j0ntech

+0

Tôi có hai lớp: 1) RegistrationScreen mở rộng Hoạt động. 2) SocketClient không mở rộng Hoạt động. Khi người dùng gửi một biểu mẫu trong RegistrationScreen nó tạo ra một đối tượng SocketClient mới, nó đăng ký thông qua một kết nối socket (bit sẽ ném ra một IOException). Nếu thành công, SocketClient trả về các giá trị cho lớp RegistrationScreen, nhưng khi nó không thành công mà tôi đang gặp khó khăn. Tôi có nên chỉ cần làm cho SocketClient ném các ngoại lệ và bắt chúng trong RegistrationScreen? – Joseph

Trả lời

15

Bạn chỉ cần vượt qua bối cảnh Khi Bạn gọi Non-Activity lớp từ cuộc gọi lớp Hoạt động Giống như

YourNonActivtyClass obj = new YourNonActivtyClass(Activity.this); 
+1

Cảm ơn. Chỉ là một vấn đề, khi sử dụng ở trên tôi nhận được "Không có trường hợp kèm theo của loại Hoạt động có thể truy cập trong phạm vi". Đây là từ trong lớp mở rộng Hoạt động. – Joseph

+0

Đầu tiên của tất cả các lớp hoạt động android là cuộc gọi và sau đó bạn có thể gọi bất kỳ lớp học hoạt động như vậy không có một vấn đề ở trên mã cho tôi .... –

+0

Không bối cảnh một đối tượng rất nặng để được đăng như thế này? – Wooff

-13

điệp Toast nên làm việc trong bối cảnh ứng dụng, ví dụ:

Toast.makeText(getApplicationContext(), ...); 
+2

Nếu anh ta không ở trong một hoạt động, sau đó có thể không có phương thức getApplicationContext(). Ngoài ra, không cần sử dụng phương pháp này. Bản thân đối tượng hoạt động là một ngữ cảnh. Vì vậy, sử dụng YourActivityName.this sẽ làm việc tốt thay vì getApplicationContext(); – FoamyGuy

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