Search code examples
javaandroidandroid-activitycocos2d-x

Android back button does not work


I am using cocos2dx to make a small game and in the activity of my game i give the following functions to handle back button.

@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();
 }

On pressing back button i get the following warning in my logcat

Can't open keycharmap file

Error loading keycharmap file '/system/usr/keychars/qtouch-touchscreen.kcm.bin'. hw.keyboards.65538.devname='qtouch-touchscreen'

The call doesn't reach onKeyDown or onDestroy functions.

Please tell me why this warning is caused and why i cannot handle the android back button.

The functions work fine on my java android project but not in my cocos2d-x project


Solution

  • It is been handled here in the file Cocos2dxGLSurfaceView.java

    change it to below, where myActivity is the 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: