Android NDK:如何在不使用Java的情况下覆盖NativeActivity中的onBackPressed? [英] Android NDK: How to override onBackPressed in NativeActivity without java?

查看:94
本文介绍了Android NDK:如何在不使用Java的情况下覆盖NativeActivity中的onBackPressed?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用完全使用NativeActivity用C/C ++编写,没有Java代码(基于"native-activity" NDK示例).按下后退"按钮将其关闭(破坏活动),但是我需要该按钮的其他功能,因为我有自己的UI和通过OpenGL显示的菜单.

My app is written entirely in C/C++ using NativeActivity, it has no Java code (based on "native-activity" NDK example). Pressing "back" button closes it (destroys activity), but I need other behaivor of this button because I have my own UI and menus which are displayed via OpenGL.

在我阅读时,在为了更改后退"按钮的行为,我需要重写Java活动类的onBackPressed()方法.但是我不使用Java,我可以从C/C ++中获取此方法以覆盖它吗?

As I read, In order to change behaivor of "back" button, I need to override onBackPressed() method of Java activity class. But I don't use Java, can I reach this method from C/C++ to override it?

如果否,是否还有另一种方法可以使用NDK使用后退"按钮进行处理,没有Java代码?

If no, is there another way to handle with "back" button using NDK, without java code?

推荐答案

已解决:为了防止默认的后退"按钮出现,它足以在处理键事件时返回1:

Solved: to prevent default "Back" button behaivor it is enough to return 1 while handling key event:

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

这篇关于Android NDK:如何在不使用Java的情况下覆盖NativeActivity中的onBackPressed?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆