【问题标题】:Android NDK: How to override onBackPressed in NativeActivity without java?Android NDK:如何在没有 java 的情况下覆盖 NativeActivity 中的 onBackPressed?
【发布时间】:2012-08-21 06:29:20
【问题描述】:

我的应用程序完全使用 NativeActivity 用 C/C++ 编写,它没有 Java 代码(基于“native-activity”NDK 示例)。按“后退”按钮将其关闭(破坏活动),但我需要此按钮的其他行为,因为我有自己的 UI 和通过 OpenGL 显示的菜单。

As I read,为了改变“返回”按钮的行为,我需要重写Java活动类的onBackPressed()方法。但是我不使用Java,我可以从C/C++ 达到这个方法来覆盖它吗?

如果没有,是否有其他方法可以使用 NDK 处理“后退”按钮,无需 Java 代码?

【问题讨论】:

  • NativeActivity 是一个 Java 类!!你说你正在使用它!!,所以你可以在其中覆盖 onBackPressed?
  • 不,我的意思是我在“native-activity”NDK 示例中使用它:android_native_app_glue.h、struct android_app 等。

标签: android android-ndk native-code


【解决方案1】:

已解决:为了防止默认的“返回”按钮行为,在处理关键事件时返回 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;
}

【讨论】:

    猜你喜欢
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    相关资源
    最近更新 更多