Не работает кнопка возврата Android

Я использую cocos2dx, чтобы сделать маленькую игру, и в своей игре я даю следующие функции для обработки кнопки назад.

@Override
 public boolean onKeyDown(int keyCode, KeyEvent event)
 {
     return super.onKeyDown(keyCode, event);
 }

 @Override
 public void onDestroy()
 {
     android.os.Process.killProcess(android.os.Process.myPid());
     super.onDestroy();
 }

При нажатии на кнопку "Назад" я получаю следующее предупреждение в моем logcat

Не удается открыть файл keycharmap

Ошибка при загрузке файла цепочки ключей '/system/usr/keychars/qtouch-touchscreen.kcm.bin'. hw.keyboards.65538.devname='QTouch-сенсорный экран'

Вызов не достигает функций onKeyDown или onDestroy.

Пожалуйста, скажите мне, почему это предупреждение вызвано и почему я не могу обработать кнопку возврата Android.

Функции отлично работают на моем проекте Java-Android, но не в моем проекте Cocos2D-X

5 ответов

Решение

Это было обработано здесь в файле Cocos2dxGLSurfaceView.java

измените его на ниже, где myActivity такое cocos2dActicity

        case KeyEvent.KEYCODE_BACK:
                    AlertDialog ad = new AlertDialog.Builder(myActivity)
                    .setTitle("EXIT?")
                    .setMessage("Do you really want to exit?")
                    .setPositiveButton("YES", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            ((Cocos2dxActivity)myActivity).finish();
                        }
                    })
                    .setNegativeButton("NO", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                        }
                    }).create();
                    ad.show();
            return true;
        case KeyEvent.KEYCODE_MENU:

Чтобы обработать нажатие кнопки назад, вам нужно переопределить onBackPressed() метод вашей деятельности, а не это два метода.

Просто ваши приложения реализуют метод переопределения для onKeyDown,

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // Here to implements for your code.
        Log.d(TAG, "KEYCODE_BACK");
    }
    return super.onKeyDown(keyCode, event);
}

Вот обновление для Cocos2d-x версии 3+

На этот вопрос ответили просто (и работает) здесь

а также чуть менее полный YouTube здесь

Вы включили сенсорный? Если нет, то, пожалуйста, включите его, и надеюсь, это решит вашу проблему.

Я полагаю, это кнопка на экране вашей игры.

Другие вопросы по тегам