Tôi có một ứng dụng Android được mô hình hóa sau ví dụ LunarLander
của Google. Tôi đang gỡ lỗi trên thiết bị thực, (Motorola Droid
) với Android 2.0
. Khi định hướng thay đổi, chương trình bị treo trên NullPointerException
. Logcat từ ngay trước khi vụ tai nạn:Lỗi "Đã xảy ra lỗi ở đây, không mong đợi PACKAGE được tiếp tục" trong android Logcat
02-01 00:24:27.956: DEBUG/nate(8358): Starting Game
02-01 00:24:36.878: DEBUG/dalvikvm(1086): GC freed 1788 objects/92256 bytes in 1389ms
02-01 00:24:38.542: INFO/WindowManager(1021): Setting rotation to 1, animFlags=0
02-01 00:24:38.558: INFO/ActivityManager(1021): Config changed: { scale=1.0 imsi=310/4 loc=en_US touch=3 keys=2/1/2 nav=2/2 orien=2 layout=34}
02-01 00:24:38.620: WARN/UsageStats(1021): Something wrong here, didnt expect org.nifong.leeder to be resumed
02-01 00:24:38.886: DEBUG/nate(8358): New Surface dimensions: 854x442
02-01 00:24:38.886: DEBUG/nate(8358): flies was null
Dòng đầu tiên mà tôi lo lắng là "Something wrong here"
tại 24:38.620
. Tôi không biết nó có ý nghĩa gì, nhưng tôi nghĩ nó là do tôi không phản ứng đúng với sự thay đổi màn hình.
Tiếp theo, tôi nhận được thông báo gỡ lỗi mà tôi đã tự in từ bên trong phương thức của riêng mình surfaceChanged()
về kích thước bề mặt mới.
Sau đó, tôi in thông báo gỡ lỗi về việc ruồi có là null
hay không. flies
là trường cuối cùng gây ra NullPointerException
. Nó được tạo ra một lần, và không bao giờ được viết lại cho phần còn lại của chương trình. Tôi biết rằng nó không phải là null trước vụ tai nạn, bởi vì nó đã được đọc nhiều lần.
Có ai có manh mối về cách biến thành viên riêng tư của tôi bị vô hiệu bởi những manh mối này không?
Tôi sẽ bao gồm mã nhưng có nhiều mã và tôi không biết điều gì sẽ có liên quan.
Đây có thể là giải pháp cho ứng dụng của bạn, tùy thuộc vào trường hợp sử dụng của bạn. Theo quan điểm của tôi, đây là một hành vi thô lỗ buộc người dùng trong một hành vi sử dụng mà anh ta có thể không thích ... – Janusz