2012-08-26 10 views
7

Mi aplicación está escrita completamente en C/C++ usando NativeActivity, no tiene código Java (basado en el ejemplo NDK de "actividad nativa"). Al presionar el botón "volver" se cierra (destruye la actividad), pero necesito otro comportamiento de este botón porque tengo mi propia interfaz de usuario y menús que se muestran a través de OpenGL.Android NDK: ¿Cómo anular onBackPressed en NativeActivity sin Java?

As I read, Para cambiar el comportamiento del botón "Atrás", debo anular el método onBackPressed() de la clase de actividad de Java. Pero no uso Java, ¿puedo acceder a este método desde C/C++ para anularlo?

Si no, ¿hay otra forma de manejar con el botón "Atrás" usando NDK, sin código java?

+0

NativeActivity es una clase Java !! ¡¡y dijiste que lo estabas usando !!, ¿así que puedes anular el contenido deBackPressed dentro de él? –

+0

No, quiero decir que lo estoy usando como en el ejemplo NDK de "actividad nativa": android_native_app_glue.h, 'struct android_app', etc. –

Respuesta

12

resuelto: por defecto para evitar botón "Atrás" behaivor es suficiente para volver 1 mientras manejo de eventos:

int32_t app_handle_event(struct android_app* app, AInputEvent* event) { 
    if (AKeyEvent_getKeyCode(event) == AKEYCODE_BACK) { 
     // actions on back key 
     return 1; // <-- prevent default handler 
    }; 
    // ... 
    return 0; 
}