Как уведомить приложение NativeScript Vue о захвате ключевого события на уровне активности? - PullRequest
0 голосов
/ 08 января 2020

Я расширил androidx.appcompat.app.AppCompatActivity для захвата ключевого события в проекте NativeScript- Vue. Теперь моя проблема заключается в том, как уведомить приложение Vue о том, что ключ даже был захвачен. Что еще более важно, как правильно уведомить приложение Vue (потому что я могу придумать какой-то не слишком правильный способ решения проблемы)?

1 Ответ

0 голосов
/ 10 января 2020

В конце я остановился на самом простом решении. В упражнении. android. js я реализовал простой шаблон слушателя:

androidx.appcompat.app.AppCompatActivity.extend("org.myApp.MainActivity", {
    keyUpListener: null,
    registerListener(name, func) {
        if (name == "keyUp") {
            this.keyUpListener = func;
        }
        else {
            throw new Error(`There's not a type of listener called ${name}.`);
        }
    },
    unregisterListener(name) {
        if (name == "keyUp") {
            this.keyUpListener = null;
        }
        else {
            throw new Error(`There's not a type of listener called ${name}.`);
        }
    },
    onKeyUp: function (keyCode, event) {
        if (this.keyUpListener) {
            let result = this.keyUpListener(keyCode, event);
            if (result != null) {
                return result;
            }
        }
        return superProto.onKeyUp.call(this, keyCode, event);
    },
    [... snip ...]

Затем в моем файле. vue я просто регистрирую слушателя для расширенного занятия:

import { android as androidApp } from "tns-core-modules/application";

[... snip ...]

androidApp.foregroundActivity.registerListener(
        "keyUp",
        this.onKeyUp
);

Если есть лучший Vue или NativeScript способ решения этой проблемы, я хотел бы узнать об этом.

...