HarmonyOS鸿蒙Next中关于创建一个新页面,官方文档里的示例是否有误?
HarmonyOS鸿蒙Next中关于创建一个新页面,官方文档里的示例是否有误? 不知道各位有没有看过https://developer.harmonyos.com/cn/docs/documentation/doc-guides/start-second-page-0000000000029619,左侧快速入门/创建另一个页面的示例代码,要求选择“New > Ability > Empty Feature Ability(Java)”。
然后在跳转的时候需要调用以下代码:
Intent secondIntent = new Intent();
Operation operation = new Intent.OperationBuilder()
.withBundleName("com.example.myapplication")
.withAbilityName("com.example.myapplication.SecondAbility")
.build();
secondIntent.setOperation(operation);
startAbility(secondIntent); // 通过AbilitySlice的startAbility接口实现启动另一个页面
但之后在看Ability模块的介绍时又写着:AbilitySlice间导航里如果两个AbilitySlice处于同一个Page的话只需要
button.setClickedListener(listener -> present(new TargetSlice(), new Intent()));
就直接可以完成跳转了,试了下的确可以直接跳,并且都不需要单独建一个Ability,然后再调用super.setMainRoute(XXXXAbilitySlice.class.getName());
也就是说只要建一个XXXXSlice extends AbilitySlice就可以了。
然后在代码中调用present(new XXXXSlice(), new Intent());便可成功跳转。
实在是没搞懂官网示例的这个创建另一个页面以及跳转示例代码是什么场景,似乎唯一区别就是用“New > Ability > Empty Feature Ability(Java)”的方式创建出来的会在config.json中有对应的配置:
{
"orientation": "landscape",
"formEnabled": false,
"name": "com.mazda.firsthmp.SecondAbility",
"icon": "$media:icon",
"description": "$string:secondability_description",
"label": "entry",
"type": "page",
"launchType": "standard"
}
类似android开发的manifest中声明了新的activity,大家来讨论下吧
更多关于HarmonyOS鸿蒙Next中关于创建一个新页面,官方文档里的示例是否有误?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
不错,还是相当高明的
更多关于HarmonyOS鸿蒙Next中关于创建一个新页面,官方文档里的示例是否有误?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
膜拜呀,请接受我的膝盖
有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html
Ability相当于Activity,
AbilitySlice相当于Fragment 你就这么理解就可以了。
Ability相当于Activity,
AbilitySlice相当于Fragment 你就这么理解就可以了。
Ability更像是一个个单独的App。Ability和Ability间的跳转可以发生在两个完全不相干的独立的Ability之间,slice更偏向是自己app内部的页面之间的跳转。不知道理解的对不对,就好比android你在应用a里面去通过指定action打开一个网页,此时会调起手机内安装的所有满足要求的app。这种场景就等于是自己的Ability去跳转别人的Ability。
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17
示例代码给的是两个ability之间的跳转,楼主这种写法是两个abilitySlice之间的跳转。
我个人理解两种场景的区分在于如果是同一个业务的两个页面跳转,用楼主的写法,比如文档里举的例子“当一个Page由多个AbilitySlice共同构成时,这些AbilitySlice页面提供的业务能力应具有高度相关性。例如,新闻浏览功能可以通过一个Page来实现,其中包含了两个AbilitySlice:一个AbilitySlice用于展示新闻列表,另一个AbilitySlice用于展示新闻详情。”
如果是两个业务之间的页面跳转,比如从美团跳到支付宝这种场景,就是用官网示例代码的这种跳转了。
个人拙见,请多指正。
对的,所以说如果是自己开发的独立应用,类似新闻这种从列表页跳到详情页,那么只需要简单的建两个slice进行跳转就行了。但是像你说的大众点评支付需要跳支付宝或者微信支付之类的,是几个不同Ability之间的跳转,举个例子类似android你要在自己app里去打开一个网页,但是你手机里装了多个浏览器,此时打开就是通过指定Action和Entity去找匹配的Ability,这样的跳转是跨应用的可以这么理解吧
咨询一下,如果是abilitySlice之间跳转,如何刷新页面?
我曾经页面全是abilitySlice,但是跳转过程中,abilitySlice打开过,再次进去的话,页面不会刷新。
解释一下页面不刷新的意思,举例:
- Test1AbilitySlice -> Test2AbilitySlice :在Test2AbilitySlice 做一些动作,比如把layout中编写的 字号20,颜色白色,文本“今天”的text,动态修改为字号50,颜色红色,文本“明天”;
- 回退页面至Test1AbilitySlice;
- Test1AbilitySlice -> Test2AbilitySlice :发现Test2AbilitySlice 的页面依然是 字号50,颜色红色,文本“明天”,并不会像Android那样每次打开都能重新绘制。
跳转方法:present(new Test2AbilitySlice(),new Intent());
如果想重新绘制页面该怎么处理?
可以有,太及时了,我正找呢
啊?什么太及时了。。。
在HarmonyOS鸿蒙Next中,官方文档关于创建新页面的示例通常是准确的。开发者应确保使用的是最新版本的文档,并按照文档中的步骤进行操作。如果发现示例代码无法正常运行,建议检查开发环境配置、依赖库版本以及代码实现细节,确保与文档要求一致。官方文档通常会提供详细的步骤和代码示例,开发者应严格按照文档操作,避免自行修改或省略步骤。
在HarmonyOS鸿蒙Next中,创建新页面的示例代码通常是准确的。如果你发现官方文档中的示例代码无法正常运行,建议检查以下几个方面:
- 代码完整性:确保示例代码完整,没有遗漏关键部分。
- 依赖库:确认所有依赖库和API版本与示例代码匹配。
- 环境配置:确保开发环境(如IDE、SDK)已正确配置。
- 官方更新:查看官方是否有更新或修正,有时文档可能会滞后于实际开发进度。
如果问题依然存在,建议查阅最新的官方文档或社区论坛,或直接联系官方技术支持。