Thay đổi cấu hình thiết bị Android (ví dụ: "trượt bàn phím cứng trở lại") sẽ luôn gọi PhoneWindow.onConfigurationChanged()
, do đó, sẽ gọi số reopenMenu()
. Điều này sẽ làm cho menu của hoạt động hiện đang chạy được mở lại, trong trường hợp nó đang hiển thị.Làm cách nào để kiểm tra theo chương trình nếu trình đơn hoạt động của tôi hiển thị tại một thời điểm cụ thể?
Tôi có một khóa trên menu của mình được thực hiện trong ghi đè onPrepareOptionsMenu()
. Người dùng phải nhập mã mỗi lần họ muốn xem trình đơn. Tôi không muốn người dùng được yêu cầu nhập lại mã, trong khi trình đơn vẫn chỉ vì thay đổi cấu hình. Vì vậy, tôi muốn biết, có cách nào tôi có thể kiểm tra xem trình đơn của hoạt động tiền cảnh hiện tại đã được hiển thị? Biết được điều này, tôi có thể bỏ qua yêu cầu mã truy cập nếu menu đã hết.
Triển khai giải pháp tùy chỉnh của tôi là sử dụng cờ của riêng tôi menuShowing
, mà tôi đặt trong onPrepareOptionsMenu
và đặt lại trong onOptionsItemSelected
và trong onKeyDown
nếu nút quay lại được nhấp.
EDIT:
Có vẻ như thay đổi cấu hình định hướng màn hình không kích hoạt hành vi này. Tuy nhiên, một phím trượt bàn phím cứng.
Sau nhiều nỗ lực của tôi, tôi nghĩ rằng cách tiếp cận tùy chỉnh boolean của bạn là tốt nhất. Bạn có thể đơn giản hóa nó với 'onPrepareOptionsMenu()': true và 'onOptionsMenuClosed()': false (vì điều này sẽ được gọi bằng cách chọn một mục hoặc nhấn một phím cứng: back, home, menu). FYI, bạn có thể hỗ trợ một loại trượt bàn phím cứng trong trình giả lập bằng cách đặt các thuộc tính phần cứng để không có bàn phím cứng trong ảnh chân dung và có một bàn phím ở chế độ ngang, điều đó sẽ hữu ích. – Sam