繁体   English   中英

Nativescript - Android 禁用物理设备后退按钮

[英]Nativescript - Android disabling physical device back button

我试图仅在某些屏幕上禁用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

      });
    }
  }
@Override
public void onBackPressed() {
   if (!shouldAllowBack()) {
       doSomething();
   } else {
       super.onBackPressed();
   }
}

在您的活动中添加此代码-

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

}

有关更多信息,请访问链接。

后退按钮在 Activity 级别控制,NativeScript 使用一个单一的 Activity,您的所有页面/路由都是其中的片段。

所以你不必在每个页面/组件上调用它。 将侦听器添加到您的应用程序组件并检查路由器以了解您所在的页面并取消返回事件。

使用location并检查 location 是否包含要使用自定义函数的所需路径(如路由文件中所述)。

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

构造函数(私有_位置:位置){}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM