Tôi đang có một vấn đề kỳ lạ. Tôi đang làm một ứng dụng với Targetdk 13.
Trong phương thức onCreate của hoạt động chính của tôi, tôi gọi getActionBar()
để thiết lập thanh hành động của mình. Điều này hoạt động tốt khi chạy trên trình giả lập Android 3.2, nhưng khi sử dụng Android 3.0 và 3.1 thì getActionBar()
phương thức trả về null.
Tôi thấy điều này cực kỳ kỳ lạ, và tôi không thể thấy bất kỳ lý do tại sao nó sẽ làm như vậy. Đây có phải là một lỗi với trình giả lập hay có điều gì tôi cần phải làm, để đảm bảo rằng ứng dụng của tôi có một thanh hành động không?
GIẢI PHÁP:
Tôi nghĩ rằng tôi đã tìm thấy một giải pháp cho vấn đề này. Tôi đã không sử dụng setContentView để đặt bố cục cho hoạt động. Thay vào đó tôi đã sử dụng fragmentTransaction.add(android.R.id.content, mFragment, mTag)
để thêm một đoạn vào hoạt động. Điều này hoạt động tốt trong 3.2, nhưng trong các phiên bản tổ ong trước đó, thanh hành động dường như không được đặt nếu bạn không sử dụng setContentView trong onCreate()
phương thức. Vì vậy, tôi đã sửa nó bằng cách sử dụng setContentView()
phương thức trong phương thức của mình onCreate()
và chỉ cung cấp cho nó một bố cục có chứa FrameLayout trống. Tôi vẫn có thể sử dụng fragmentTransaction.add(android.R.id.content, mFragment, mTag)
phương thức giống như trước đây.
Đây không phải là bản sửa lỗi đẹp nhất, nhưng nó hoạt động.