2011-10-14 22 views
5

Tôi đang sử dụng Toast.makeText để hiển thị kết quả từ hộp thoại và gặp sự cố hơi lạ: văn bản hiển thị phía trên khung nên giữ nó, như thế này :Toast.makeText (...). Hiển thị() đôi khi bị sai lệch

Thông báo không được căn chỉnh với khung. Hãy sắp xếp nó tốt hơn. [_ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ ___]

Tôi thường đang sử dụng mã trông như

Toast bread = Toast.makeText(getContext(), R.string.message, Toast.LENGTH_LONG); 
bread.show(); 

từ một hộp thoại. Tôi đã nghe bối cảnh xấu đôi khi có thể gây ra vấn đề lạm phát nhưng getOwnerActivity() là trở về null, vì vậy đó là ra ngoài. Trong mọi trường hợp, tôi đã nghĩ getContext() sẽ cung cấp ngữ cảnh được truyền vào lúc xây dựng, đó là hoạt động.

Mọi đề xuất?

+2

Hãy thử thay đổi getContext() bằng getApplicationContext() ... –

Trả lời

20

bạn có thể thử này:

Toast bread = Toast.makeText(getApplicationContext(), R.string.message, Toast.LENGTH_LONG); 
bread.show(); 
+0

Không có sẵn trong lớp Dialog nhưng sẽ 'getContext(). GetApplicationContext()' làm việc? –

+0

Nó đã làm việc một điều trị, cảm ơn! –

+0

Nó đã được viết như là một bình luận của câu hỏi trước khi bạn gửi câu trả lời này –

1

Nếu bạn tạo các bánh mì nướng từ bên trong một hoạt động bạn nên sử dụng: this hoặc MyActivityName.this như tham số ngữ cảnh.

+0

Đó là từ một hộp thoại, nhưng cảm ơn anyway. –

3
bread.setGravity(5,5,5); 

thử chơi xung quanh bằng cách thay đổi các giá trị đó cho đến khi bạn nhận được vị trí chính xác.

Nhưng sử dụng Gravity.CENTER và hằng số khác là cách prefererrd ..

1

Thử sử dụng,

<supports-screens 
    android:largeScreens="true" 
    android:normalScreens="true" 
    android:smallScreens="true" 
    android:anyDensity="true" /> 

trong file manifest của bạn.

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