我正在尝试仅在某些屏幕中将物理设备禁用回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
});
}
}
答案 0 :(得分:0)
@Override
public void onBackPressed() {
if (!shouldAllowBack()) {
doSomething();
} else {
super.onBackPressed();
}
}
答案 1 :(得分:0)
将此代码添加到您的活动中-
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// Your Code Here. Leave empty if you want nothing to happen on back press.
}
有关更多信息,请访问this链接。
答案 2 :(得分:0)
“后退”按钮在“活动”级别进行控制,NativeScript使用一个“活动”,而您的所有页面/路由都是其中的片段。
因此您不必在每个页面/组件上都调用它。将侦听器添加到您的应用程序组件,然后检查路由器以了解您所在的页面并取消向后事件。
答案 3 :(得分:0)
使用location
并检查位置是否包含要在其中使用自定义功能的所需路径(如路由文件中所述)。
import { Location } from '@angular/common';
构造函数(私有_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;
});
}