Tôi có sự kiện onKeyDown
chỉ cần thiết để xử lý các phím phần cứng Lên và Xuống trong ứng dụng của mình. Đối với những nó trả về đúng, khi chúng được xử lý. Đối với bất cứ điều gì khác nó trả về false mà tôi hiểu có nghĩa là hệ điều hành nên xử lý chúng. Tuy nhiên, khi tôi nhấn nút Quay lại, số onKeyDown
của tôi được gọi và trả về false, nhưng không có hiệu ứng nào khác. Tôi muốn/mong đợi hệ điều hành sẽ hoàn thành Activity
hiện tại và tiếp tục lại phiên bản trước.Xử lý phần cứng Android Nút quay lại
Đây có phải là hành vi đúng hay không, có điều gì đó không?
Cập nhật:
Chúc mừng chàng trai, vẻ ngoài thói quen onKeyDown của tôi như thế này, bây giờ tôi đã theo CommonsWare của lời khuyên:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
super.onKeyDown(keyCode, event);
boolean handled = true;
// handle key presses
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
mCursorX = mCursorX - 1;
if (mCursorX < MAP_MIN_X) { mCursorX = MAP_MIN_X; }
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
mCursorX = mCursorX + 1;
if (mCursorX > MAP_MAX_X) { mCursorX = MAP_MAX_X; }
break;
default:
handled = false;
if (handled) {
redrawCursorno();
return true;
}
return super.onKeyDown(keyCode,event);
}
Lớp học của tôi trông giống như:
public class Map extends Activity implements OnClickListener, SurfaceHolder.Callback, OnTouchListener {
Tôi phải thừa nhận Tôi không biết tại sao @override và dòng 'siêu' đầu tiên ở đó, họ chỉ ở trong tất cả các thói quen mà tôi đã xem xét. Nếu super.onKeyDown chạy onKeyDown cho Activity, sau đó tôi có thể không muốn nó lúc bắt đầu, chỉ ở cuối nếu thói quen của tôi không xử lý nó, mà tôi nghĩ là những gì tôi đã thêm vào. Điều đó nghe có đúng hay tôi vẫn còn bối rối?
-Frink
bạn đang thử điều này trên một chế độ xem web? – Sephy
Đăng mã của bạn. – Falmarri