Nativescript - Android отключает кнопку возврата физического устройства - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь отключить физическое устройство обратно в android только на некоторых экранах. Попытка кода ниже не работает. Есть идеи?

import { RouterExtensions } from "nativescript-angular";
  import * as application from "application";
  import { AndroidApplication, AndroidActivityBackPressedEventData } from "application";
  import { isAndroid } from "platform";

  export class ItemComponent implements OnInit {
    constructor(private router: Router) {}

    ngOnInit() {
      if (!isAndroid) {
        return;
      }
      application.android.on(AndroidApplication.activityBackPressedEvent, (data: AndroidActivityBackPressedEventData) => {

          data.cancel = true; // prevents default back button behavior

      });
    }
  }

Ответы [ 4 ]

0 голосов
/ 14 ноября 2018

Используйте location и проверьте, содержит ли местоположение нужный путь (как указано в файле маршрутизации), в котором вы хотите использовать свою пользовательскую функцию.

import { Location } from '@angular/common';

конструктор (private _location: Location) {}

if (application.android) {
            application.android.on(AndroidApplication.activityBackPressedEvent, (data: AndroidActivityBackPressedEventData) => {
                const path = this._location.path();

            console.log(`path i s--> ${path}`);
            switch (path) {
                case '/Screen 1':
                    data.cancel = true;
                    break;
                case '/Screen 2':
                    //do something else
                    break;
            });
        }
0 голосов
/ 14 ноября 2018

Добавьте этот код в свою деятельность-

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
       // Your Code Here. Leave empty if you want nothing to happen on back press.

}

Для получения дополнительной информации посетите эту ссылку.

0 голосов
/ 14 ноября 2018

Кнопка «Назад» управляется на уровне активности, NativeScript использует одну отдельную активность, и все ваши страницы / маршруты являются фрагментами внутри нее.

Так что вам не нужно вызывать его на каждой странице / компоненте. Добавьте прослушиватель к компоненту приложения и проверьте маршрутизатор, чтобы узнать, на какой странице вы находитесь, и отмените событие возврата.

0 голосов
/ 14 ноября 2018
@Override
public void onBackPressed() {
   if (!shouldAllowBack()) {
       doSomething();
   } else {
       super.onBackPressed();
   }
}
...