2012-08-26 11 views
7

La mia app è scritta interamente in C/C++ usando NativeActivity, non ha codice Java (basato sull'esempio NDK "native-activity"). Premendo il pulsante "indietro" si chiude (distrugge l'attività), ma ho bisogno di altri comportamenti di questo pulsante perché ho la mia interfaccia utente e menu che vengono visualizzati tramite OpenGL.NDK Android: Come sovrascrivere suBackPressato in NativeActivity senza java?

As I read, Al fine di modificare il comportamento del pulsante "indietro", ho bisogno di sovrascrivere il metodo onBackPressed() della classe di attività Java. Ma io non uso Java, posso raggiungere questo metodo da C/C++ per sovrascriverlo?

Se no, c'è un altro modo di gestire con il pulsante "indietro" utilizzando NDK, senza codice java?

+0

NativeActivity è una classe Java !! e hai detto che lo stai usando !!, quindi puoi eseguire l'override suBackPressed all'interno di esso? –

+0

No, voglio dire che lo sto usando come nell'esempio NDK "native-activity": android_native_app_glue.h, 'struct android_app' ecc. –

risposta

12

risolto: per evitare default "Indietro" behaivor è sufficiente per tornare 1, mentre la gestione degli eventi chiave:

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; 
}