【快应用】快应用学习之页面周期函数onBackPress无法触发?

news2024/11/18 15:42:16

【关键词】

onBackPress、退出提示

【问题背景】

在学习和调试快应用的过程中,我在子页面中的onBackPress()函数中定制了退出的一个弹框提醒,将它作为组件引入父页面中,弹框却无法触发?
问题代码如下:
子页面

<template>
<!-- Only one root node is allowed in template. -->
<div class="container ">
<div class="mlr-container">
<input onclick="hasinstallShortcut" type="button" value="Check Shortcut Creation" class="btn-blue" />
</div>
<div class="mlr-container">
<input onclick="deeplink" type="button" value="Create Shortcut By Deeplink" class="btn-blue" />
</div>
<div class="mlr-container">
<input onclick="setShortcut" type="button" value="Create Shortcut" class="btn-blue" />
</div>
<div class="mlr-container">
<shortcut-button class="shortcut" add-type="5" onclick="click()"></shortcut-button>
</div>
<div class="mlr-container">
<input onclick="turnTo" type="button" value="Turn To My QuickApp" class="btn-blue" />
</div>
</div>
</template>

<style lang="sass">
        .container {
        flex-direction: column;
        justify-content: center;
        align-items: center;
        }
        .mlr-container {
        margin-top: 50px;
        margin-right: 30px;
        margin-left: 30px;
        flex-direction: column;
        }
        .btn-blue {
        background-color: #0faeff;
        color: #ffffff;
        width:600px;
        height: 150px;
        font-size: 50px;
        border-radius:15px;
        }
        .shortcut {
        margin-top: 40px;
        background-color: #0faeff;
        color: rgb(22, 203, 219);
        font-size: 40px;
        width: 500px;
        height: 100px;
        border-radius: 220px;
        align-self: center;
        text-align: center;
        opacity: 0.4;
        }
</style>

<script>
  import shortcut from '@system.shortcut';
          import prompt from '@system.prompt';
          import router from '@system.router'
module.exports = {
        onInit: function () {
        this.$page.setTitleBar({
        text: '创建桌面图标',
        backgroundColor: '#007DFF',
        backgroundOpacity: 0.5,
        });
        },
        setShortcut() {
        shortcut.install({
        message: 'Adds the shortcut to the desktop for convenient use next time.',
        success: function (ret) {
        console.log('handling createShortCut success');
        },
        fail: function (erromsg, errocode) {
        prompt.showToast({
        message: erromsg+errocode,
        duration: 2000,
        gravity: 'bottom'
        })
        }
        });
        },
        hasinstallShortcut() {
        shortcut.hasInstalled({
        success: function (ret) {
        console.log('hasInstalled success ret---' + ret);
        if (ret) {
        // 桌面图标已创建   
        prompt.showToast({
        message: 'has',
        })
        } else {
        // 桌面图标未创建
        prompt.showToast({
        message: 'has not',
        })
        }
        }.bind(this),
        fail: function (erromsg, errocode) {
        console.log('hasInstalled fail ret---' + erromsg);
        }.bind(this),
        complete: function () {
        }
        });
        },
        deeplink() {
        router.push({
        // uri: '/hello'
        uri: 'hap://app/com.yzhj.yicaiyipu'
        // uri: 'hwfastapp://com.yzhj.yicaiyipu'
        });
        },
        click(event) {
        console.log(event,event.eventStatusCode);
        prompt.showToast({
        message: event.eventMessage
        });
        },
        turnTo() {
        router.push({
        uri: `/homePage?package='com.huawei.QuickAppDemo'`
        // uri: 'hap://app/com.huawei.QuickAppDemo'
        // uri: 'hwfastapp://com.yzhj.yicaiyipu'
        });
        },
        onBackPress () {
        console.log("back!!")
        var that = this
        shortcut.install({
        message: '我看你很喜欢这个应用呢,加个桌面再退出吧',
        success: function (ret) {
        console.log('添加成功');
        that.$app.exit()
        },
        fail: function (erromsg, errocode) {
        prompt.showToast({
        message: erromsg+errocode,
        duration: 2000,
        gravity: 'bottom'
        })
        }
        })
        return true
        },
        }
        </script>

父页面

<import name="shortcut" src="../Demo/demo.ux"></import>
<template>
<!-- Only one root node is allowed in template. -->
<div class="container">
<div>
<shortcut></shortcut>
</div>
</div>
</template>

<style>
  /* .container {
    flex-direction: column;
    justify-content:flex-end;
    align-items: center;
  }
</style>

<script>
  import shortcut from '@system.shortcut';
  import prompt from '@system.prompt';
  module.exports = {
    data: {
      componentData: {
        message: '点击跳转快应用',
      },
    },
    onInit() {
      this.$page.setTitleBar({
        text: '欢迎来到快应用',
        textColor: '#ffffff',
        backgroundColor: '#007DFF',
        backgroundOpacity: 0.5,
        menu: true
      });
    },
  }
</script>

控制台输出如下:

cke_1345.png​​

没有打印"back!!"。

【问题分析】
这是方法调用返回值不正确或者使用位置不对导致的。根据华为开发者官网里面对快应用页面生命周期函数以及相关案例的介绍:

开发者若想重写onBackPress生命周期,在里面自定义返回逻辑,返回值必须为true,否则快应用引擎会按照false处理,页面直接退出。且作为子组件引入时,onBackPress方法不能写在子组件中,得写在父组件中才行。

【解决方法】
确保返回值为true,把子组件里面的onBackPress方法移动到父组件中来,这个问题就可以解决了。

cke_2797.png​​

打印内容出现,且出现弹窗。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

集合处理常用Stream流

集合处理常用Stream流 1、Stream API介绍2、List集合常用Stream方法 stream流经常使用&#xff0c;但是遇到一些流操作时&#xff0c;会一下想不到用哪种&#xff0c;这里总结一下&#xff0c;方便自己或者读者查找 1、Stream API介绍 Stream API是Java 8引入的一项重要特性&a…

B. Nastya and Scoreboard(剪枝记忆化搜索)

Problem - 1340B - Codeforces Denis,在买了花和糖果之后&#xff08;你将在下一个任务中了解这个故事&#xff09;&#xff0c;与Nastya约会&#xff0c;向她表白要成为一对。现在&#xff0c;他们坐在咖啡馆里&#xff0c;最后... Denis请她答应在一起&#xff0c;但是... Na…

文盘 Rust -- tokio 绑定 cpu 实践

tokio 是 rust 生态中流行的异步运行时框架。在实际生产中我们如果希望 tokio 应用程序与特定的 cpu core 绑定该怎么处理呢&#xff1f;这次我们来聊聊这个话题。 首先我们先写一段简单的多任务程序。 use tokio::runtime; pub fn main() {let rt runtime::Builder::new_mu…

第48步 深度学习图像识别:RegNet建模(Pytorch)

基于WIN10的64位系统演示 一、写在前面 &#xff08;1&#xff09;RegNet RegNet (Regulated Networks) 是一种由 Facebook AI 的研究者们在 2020 年提出的神经网络架构&#xff0c;旨在探索网络架构设计的各种可能性&#xff0c;并找出最优的网络设计规则。RegNet 的核心理…

vue3ts分离头部变量单独一个ts

这里要说下 博主 vue^3.2.47 typescript^5.0.2 群有小伙伴说之前版本是不支持&#xff0c;所以你对下版本是不是比博主的版本低。 主要是页面代码太多&#xff0c;你看下面 然后博主就想着组合式开发 怎么把页面变干净点&#xff1a; 1、vue的就处理逻辑 2、ts就单纯定义…

vc++ 弹出打开、保存对话框功能(COM组件使用详解)

文章目录 前言一、原理二、代码封装三、使用示例C/C++实战入门到精通 https://blog.csdn.net/weixin_50964512/article/details/125710864 前言 很多应用都会有选择打开文件、或者选择保存文件的功能,这种情况下一般都是弹出一个对话框让用户自己选择。 这并不需要自己…

如何使用Scrum工具进行敏捷项目管理?

敏捷开发是一种轻量级的软件开发方式。 敏捷是一种通过创造变化和响应变化在不确定和混乱的环境中取得成功的能力。 敏捷开发是为了快速响应市场变化、通过自组织、跨职能团队 运用适合他们自身环境的实践进行演进得出解决方案。 所有符合敏捷宣言和敏捷开发十二项原则的方…

单片机要这样保护临界区

目录 一、概述 二、临界区保护测试场景 三、临界区保护三种实现 1、入门做法 2、改进做法 3、终极做法 四、附录---PRIMASK寄存器设置函数在各 IDE 下实现 一、概述 今天给大家分享的是Cortex-M裸机环境下&#xff0c;临界区保护的三种实现。 搞嵌入式玩过 RTOS 的小伙…

程序设计-编程题

CISP-PTE-编程题 2014 #include <iostream> using namespace std;double H(int n,double x) {if (n > 1)return 2 * x*H(n - 1, x) - 2 * (n - 1)*H(n - 2, x);if (n 0)return 1;if (n 1)return 2 * x; }int main() {int n;double x,result;cin >> n;cin >…

torch_geometric安装避坑

总流程&#xff1a; 1. 查看cuda, pytorch, python版本&#xff1b; 2. 依次安装torch_scatter, torch_sparse, torch_cluster, torch_spline&#xff1b; 3. 安装torch_geometric 一. 查看cuda, pytorch, python版本 可选方法如下图&#xff0c;其中该样例的cuda, pytorc…

注意力机制[矩阵]

每一个输入的向量( Embedding后的向量)&#xff0c;均有q,k,v,三个东西。其中q由下图所生成 I矩阵有a1,a2,a3,a4组成&#xff0c;Wq为权重矩阵&#xff0c;将I与Wq相乘求得Q(q1,q2,q3,q4)。K和V与I同理均可求得。 将求得出来的K&#xff0c;转置为竖向量与Q相乘&#xff0c;就…

【UE5 Cesium】12-Cesium for Unreal 去除左下角的icon

问题 在视口左下角的icon如何去除&#xff1f; 解决方法 打开“CesiumCreditSystemBP” 将“Credit Widget Class”一项中的“ScreenCredit”替换为“ScreenCreditWidget” 编译之后icon就不显示了。

戴尔游匣G16 7630原厂Win11系统带F12 Support Assist OS Recevory恢复功能

戴尔游匣G16 7630原厂Win11系统带F12 Support Assist OS Recevory恢复功能 各机型预装系统&#xff0c;带所有dell主题壁纸、dell软件驱动、带戴尔SupportAssist OS Recovery恢复功能&#xff0c;一次性恢复成新机状态&#xff0c;并且以后不用重装系统&#xff0c;直接恢复即…

MVC终极版

MVC终极版 1.把上次的代码打包为架包。2.通过basedao优化代码1.前言 3.后台代码servlet的优化。4前台代码展示 再次优化代码&#xff0c;上两次优化&#xff0c;都不是最完善的&#xff0c;这一次是最完善的了。 1.把上次的代码打包为架包。 选中两个文件&#xff0c;右键然后选…

Unreal 5 Lyra初学者游戏包概览笔记

Lyra初学者游戏包相关的官方视频有两个&#xff1a; Lyra初学者游戏包概览 https://www.bilibili.com/video/BV16B4y197Zy/Lyra跨平台UI开发 https://www.bilibili.com/video/BV1mT4y167Fm/ 这个笔记主要记录的是Lyra初学者包概览笔记的相关内容。里面介绍了如何创建关卡、输…

网络部署的思路

网络部署的思路——网络搭建的步骤 1.拓扑设计——IP地址的规划&#xff08;子网划分&#xff0c;子网汇总&#xff09; 2.实施 2.1 搭建拓扑 2.2 底层——给所有需要配置IP地址的网络节点&#xff0c;配置一个合法的IP地址 2.3 路由——全网可达 2.4 优化 策略——安全方面的…

【Linux初阶】基础IO - FILE结构体中的缓冲区

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;库函数和系统函数的刷新差异&#xff0c;缓冲区的意义、刷新策略、存在位置、文件写入的逻辑&#xff0c;缓冲…

Unity与iOS交互(1)——需要了解的IOS相关知识

【前言】 以下只是简要介绍&#xff0c;详细的内容需要自己去看链接 【Objective-C基础知识】 .h .m .mm .cpp文件区别 .h是头文件扩展名。头文件包含类&#xff0c;类型&#xff0c;函数和常数的声明&#xff0c;这里的定义一般是Public的 .m是实现文件扩展名。其包含源代…

云环境利用工具-----cf

简介 CF 是一个云环境利用框架&#xff0c;适用于在红队场景中对云上内网进行横向、SRC 场景中对 Access Key 即访问凭证的影响程度进行判定、企业场景中对自己的云上资产进行自检等等。 项目地址&#xff1a;https://github.com/teamssix/cf 使用手册&#xff1a;https://wi…

Java POI excel单元格背景色(填充)、字体颜色(对齐)、边框(颜色)、行高、列宽设置

文章目录 1、Excel Cell单元格背景色颜色名称对照关系2、Excel Cell单元格背景填充样式颜色填充对照关系3、Excel Cell字体样式设置对照图4、Excel 行高、列宽设置5、Excel单元格边框设置边框类型图片对比附一&#xff1a;一些问题1、关于列宽使用磅*20的计算方式2、关于行高使…