Tôi đang phát triển cửa sổ PopUp cho Android và đang hoạt động, tôi đã thêm EditText và Nút trên đó khi chạy trên ADV hoạt động đúng cách, trong khi chạy trên thiết bị , khi tôi tập trung vào EditText, điều này tạo ra một Ngoại lệ kỳ lạ.Ngoại lệ khi tập trung EditText trong PopupWindow đang chạy trên thiết bị
android.view.WindowManager$BadTokenException: Unable to add window - - token android.view.ViewRoot&48163b18 is not valid; is your active running?
Tôi không biết điều đó có quan trọng không, nhưng tôi đang chạy trên Galaxy Tab với đầu vào Swype.
Bây giờ tôi đọc các thông số kỹ thuật của Window.showAtLocation
public void showAtLocation (View parent, int gravity, int x, int y)
Display the content view in a popup window at the specified location. If the popup window cannot fit on screen, it will be clipped. [...]
Parameters
parent a parent view to get the getWindowToken() token from
[...]
Vấn đề là chỉ trong token, nhưng làm thế nào để tôi vượt qua token Hoạt động với nó?
Tôi cũng đã viết một mã nhỏ để tạo lại lỗi.
PopupWindow window = new PopupWindow(activity);
window.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
window.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
window.setTouchable(true);
window.setFocusable(true);
EditText text = new EditText(activity);
text.setText("Dont touch, this crash!");
window.setContentView(text);
window.showAtLocation(arg0, Gravity.NO_GRAVITY, 10,10);
Chạy trên AVD tất cả hoạt động tốt, trong khi thiết bị gặp sự cố này và ném lỗi tôi đã đề cập.
Tôi khám phá điều gì đó mới mẻ, khi tôi ở chế độ ngang, lỗi này không xảy ra.
Đây có thể là ảnh toàn cảnh trong bóng tối, nhưng sau khi nghiên cứu một chút, có vẻ như vấn đề này bạn đang gặp phải có thể do bạn sử dụng Activity.getApplicationContext làm ngữ cảnh. Chủ đề này cung cấp cho bạn một giải pháp, nếu điều này thực sự là vấn đề của bạn. http://groups.google.com/group/android-developers/browse_thread/thread/7a648edddccf6f7d?pli=1 –
Tôi đã thử thậm chí với rất nhiều ngữ cảnh (từ Nút, từ Hoạt động, ứng dụng) cùng một lỗi trên tất cả. –
@Marcos Vasconcelos, tôi có cùng một vấn đề với bạn, và nó có vẻ không phải là mã, nhưng thiết bị gây ra sự cố. và tôi đã thử nghiệm một số tab và điện thoại android của samsumg, hầu hết trong số đó sẽ bị lỗi. Tôi muốn biết thời tiết bạn đã giải quyết vấn đề này. hoặc chúng ta nên làm gì. – DiveInto