2012-08-26 63 views
7

我的應用程序完全使用C/C++編寫,使用NativeActivity,它沒有Java代碼(基於「native-activity」NDK示例)。按「後退」按鈕關閉它(銷燬活動),但我需要其他行爲的這個按鈕,因爲我有我自己的用戶界面和通過OpenGL顯示的菜單。Android NDK:如何在沒有Java的NativeActivity中重寫onBackPressed?

As I read,爲了改變「後退」按鈕的行爲,我需要覆蓋Java活動類的onBackPressed()方法。但是我不使用Java,我可以通過C/C++來覆蓋它嗎?

如果沒有,是否有另一種方法使用NDK處理「後退」按鈕,沒有java代碼?

+0

NativeActivity的是一個Java類!你說你正在使用它!!,所以你可以重寫onBackPressed嗎? –

+0

不,我的意思是我在「本地活動」NDK示例中使用它:android_native_app_glue.h,'struct android_app'等 –

回答

12

解決:防止默認的「後退」按鈕behaivor就足以返回1,同時處理關鍵事件:

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