Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
5602f6f6
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
5602f6f6
编写于
8月 26, 2022
作者:
Z
zengyawen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update docs
Signed-off-by:
N
zengyawen
<
zengyawen1@huawei.com
>
上级
b0a49ebd
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
785 addition
and
0 deletion
+785
-0
zh-cn/application-dev/Readme-CN.md
zh-cn/application-dev/Readme-CN.md
+1
-0
zh-cn/application-dev/faqs/Readme-CN.md
zh-cn/application-dev/faqs/Readme-CN.md
+15
-0
zh-cn/application-dev/faqs/faqs-ability.md
zh-cn/application-dev/faqs/faqs-ability.md
+62
-0
zh-cn/application-dev/faqs/faqs-connectivity.md
zh-cn/application-dev/faqs/faqs-connectivity.md
+31
-0
zh-cn/application-dev/faqs/faqs-data-management.md
zh-cn/application-dev/faqs/faqs-data-management.md
+24
-0
zh-cn/application-dev/faqs/faqs-development-board.md
zh-cn/application-dev/faqs/faqs-development-board.md
+51
-0
zh-cn/application-dev/faqs/faqs-device-management.md
zh-cn/application-dev/faqs/faqs-device-management.md
+24
-0
zh-cn/application-dev/faqs/faqs-file-management.md
zh-cn/application-dev/faqs/faqs-file-management.md
+36
-0
zh-cn/application-dev/faqs/faqs-graphics.md
zh-cn/application-dev/faqs/faqs-graphics.md
+15
-0
zh-cn/application-dev/faqs/faqs-hdc-std.md
zh-cn/application-dev/faqs/faqs-hdc-std.md
+63
-0
zh-cn/application-dev/faqs/faqs-ide.md
zh-cn/application-dev/faqs/faqs-ide.md
+19
-0
zh-cn/application-dev/faqs/faqs-native.md
zh-cn/application-dev/faqs/faqs-native.md
+57
-0
zh-cn/application-dev/faqs/faqs-third-party-library.md
zh-cn/application-dev/faqs/faqs-third-party-library.md
+9
-0
zh-cn/application-dev/faqs/faqs-ui-ets.md
zh-cn/application-dev/faqs/faqs-ui-ets.md
+282
-0
zh-cn/application-dev/faqs/faqs-ui-js.md
zh-cn/application-dev/faqs/faqs-ui-js.md
+96
-0
zh-cn/application-dev/faqs/figures/zh-cn_image_0000001361254285.png
...ication-dev/faqs/figures/zh-cn_image_0000001361254285.png
+0
-0
未找到文件。
zh-cn/application-dev/Readme-CN.md
浏览文件 @
5602f6f6
...
...
@@ -49,6 +49,7 @@
-
[
Native API参考
](
reference/native-apis/Readme-CN.md
)
-
[
标准库
](
reference/native-lib/third_party_libc/musl.md
)
-
[
Node_API
](
reference/native-lib/third_party_napi/napi.md
)
-
[
常见问题
](
faqs/Readme-CN.md
)
-
贡献
-
[
参与贡献
](
../contribute/贡献文档.md
)
zh-cn/application-dev/faqs/Readme-CN.md
0 → 100644
浏览文件 @
5602f6f6
# 常见问题
-
[
Ability框架开发常见问题
](
faqs-ability.md
)
-
[
UI框架(JS)开发常见问题
](
faqs-ui-js.md
)
-
[
UI框架(eTS)开发常见问题
](
faqs-ui-ets.md
)
-
[
图形图像开发常见问题
](
faqs-graphics.md
)
-
[
文件管理开发常见问题
](
faqs-file-management.md
)
-
[
网络与连接开发常见问题
](
faqs-connectivity.md
)
-
[
数据管理开发常见问题
](
faqs-data-management.md
)
-
[
设备管理开发常见问题
](
faqs-device-management.md
)
-
[
Native API使用常见问题
](
faqs-native.md
)
-
[
三四方库使用常见问题
](
faqs-third-party-library.md
)
-
[
IDE使用常见问题
](
faqs-ide.md
)
-
[
hdc_std命令使用常见问题
](
faqs-hdc-std.md
)
-
[
开发板
](
faqs-development-board.md
)
zh-cn/application-dev/faqs/faqs-ability.md
0 → 100644
浏览文件 @
5602f6f6
# Ability框架开发常见问题
## Stage模型中是否有类似FA模型的DataAbility的开发指导文档
适用于:OpenHarmony SDK 3.2.3.5版本, API9 Stage模型
Stage模型中DataShareExtensionAbility提供了向其他应用共享以及管理其数据的方法。
参考文档:
[
数据共享开发指导
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/database/database-datashare-guidelines.md
)
## 拉起Ability为什么在界面上没反应?
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
1.
如果是通过startAbility的方式拉起,检查want中abilityName字段是否携带了bundleName做前缀,如果有,请删除;
2.
检查MainAbility.ts文件中onWindowStageCreate方法配置的Ability首页文件是否在main_pages.json中有定义,如果没有定义,请补齐;
3.
SDK和OpenHarmony SDK系统推荐同一天的版本。
参考文档:
[
OpenHarmony版本转测试信息
](
https://gitee.com/openharmony-sig/oh-inner-release-management/blob/master/Release-Testing-Version.md
)
## 调用方法的时候,如何解决方法内部的this变成undefined?
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
方式一:在调用方法的时候加上.bind(this);
方式二:使用箭头函数。
## 如何解决must have required property 'startWindowIcon'报错
适用于:OpenHarmony SDK 3.2.3.5版本,API9 Stage模型
Ability配置中缺少startWindowIcon属性配置,需要在module.json5中abilities中配置startWindowIcon。
参考文档:
[
Stage模型配置文件
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/stage-structure.md
)
示例:
```
{
"module": {
// do something
"abilities": [{
// do something
"startWindowIcon": "$media:space",
"startWindowBackground": "$color:white",
}]
}
}
```
## 如何获取设备横竖屏的状态变化的通知
适用于:OpenHarmony SDK 3.2.3.5版本, API9 Stage模型
使用Ability的onConfigurationUpdated回调实现,系统语言、颜色模式以及Display相关的参数,比如方向、Density,发生变化时触发该回调。
参考文档:
[
Ability开发指导
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/ability/stage-ability.md
)
zh-cn/application-dev/faqs/faqs-connectivity.md
0 → 100644
浏览文件 @
5602f6f6
# 网络与连接开发常见问题
## Post请求时,extraData支持哪几种的数据格式?
适用于:OpenHarmony SDK 3.2.2.5版本, API9 Stage模型
extraData代表发送请求的额外数据,支持如下数据:
1.
当HTTP请求为POST、PUT方法时,此字段为HTTP请求的content。
2.
当HTTP请求为GET、OPTIONS、DELETE、TRACE、CONNECT方法时,此字段为HTTP请求的参数补充,参数内容会拼接到URL中进行发送。
3.
开发者传入string对象,开发者需要自行编码,将编码后的string传入。
## 如何理解http请求的错误码28?
适用于:OpenHarmony SDK 3.2.2.5版本,API9 Stage模型
错误码28代表CURLE_OPERATION_TIMEDOUT 。网络请求底层使用libcurl库,更多错误码可以查看相应文档。
参考文档:
[
开发指南
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-http.md#response%E5%B8%B8%E7%94%A8%E9%94%99%E8%AF%AF%E7%A0%81
)
和
[
Curl错误码
](
https://curl.se/libcurl/c/libcurl-errors.html
)
## \@ohos.net.http.d.ts的response错误码返回6是什么意思?
适用于:OpenHarmony SDK 3.2.3.5版本
6表示地址无法解析主机,可以尝试ping一下request中的url,确认是否可以ping通。
更多错误码参考
[
Response常用错误码
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-http.md#response%E5%B8%B8%E7%94%A8%E9%94%99%E8%AF%AF%E7%A0%81
)
或者
[
Curl错误码
](
https://curl.se/libcurl/c/libcurl-errors.html
)
zh-cn/application-dev/faqs/faqs-data-management.md
0 → 100644
浏览文件 @
5602f6f6
# 数据管理开发常见问题
## 如何将PixelMap的数据存储到数据库中。
适用于:OpenHarmony SDK 3.2.3.5版本
PixelMap应该被转换成相应的ArrayBuffer再放进数据库。
参考文档:
[
readPixelsToBuffer
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-image.md#readpixelstobuffer7-1
)
## 如何获取rdb关系型数据库文件
适用于:OpenHarmony SDK 3.2.3.5版本,API9 Stage模型
开发者可使用hdc_std命令拷贝文件,其中文件路径为: /data/app/el2/100/database/包名/entry/db/ ,然后拷贝该路径下后缀为 .db、.db-shm、.db-wal的文件,拷贝完成后,可以通过SQLite工具打开该数据库文件。
示例:
```
hdc_std file recv /data/app/el2/100/database/com.xxxx.xxxx/entry/db/test.db ./test.db
```
zh-cn/application-dev/faqs/faqs-development-board.md
0 → 100644
浏览文件 @
5602f6f6
# 开发板
## 如何获取开发板上截屏图片?
适用于:OpenHarmony SDK 3.2.2.5版本,API9 Stage模型
-
方法一:点击开发板下拉控制中心的截屏按钮,截屏图片通过相册可以查看。
-
方法二:通过截屏脚本一键截屏,可以在电脑上查看。操作方法:Windows上连接开发板,然后电脑上新建文本文件,拷贝如下脚本内容,文件名后缀改为.bat文件(需要提前配置好hdc的环境变量),点击运行后,截屏图片与脚本在同一目录。
示例:
```
set filepath=/data/%date:~0,4%%date:~5,2%%date:~8,2%%time:~1,1%%time:~3,2%%time:~6,2%.png
echo %filepath%
: pause
hdc_std shell snapshot_display -f %filepath%
: pause
hdc_std file recv %filepath% .
: pause
```
## RK3568板子和previewer上展示的效果差异较大,如何把previewer的尺寸调整成实际板子一样。
适用于:IDE 3.0.0.991
1.
给预览器新建Profile
!
[
zh-cn_image_0000001361254285
](
figures/zh-cn_image_0000001361254285.png
)
2.
新建Profile的具体参数可参考如下配置:
Device type : default
Resolution: 720
\*
1280
DPI: 240
## 开发板安装驱动后设备仍然无法识别,设备管理器错误识别为其他设备:FT232R USB UART ()
可能原因:开发版的USB串口驱动没有安装。
解决办法:搜索FT232R USB UART确定,下载安装驱动即可。
## 在开发板上登录需要认证网络如何进行认证
适用于:OpenHarmony SDK 3.2.2.5版本
连接需要认证的网络后,用浏览器打开任意网址就可以进入认证页面。
如果开发板上没有浏览器,可以安装
[
浏览器Sample应用
](
https://gitee.com/openharmony/app_samples/tree/master/device/Browser
)
。
zh-cn/application-dev/faqs/faqs-device-management.md
0 → 100644
浏览文件 @
5602f6f6
# 设备管理开发常见问题
## 如何获取设备的dpi值
适用于:OpenHarmony SDK 3.2.2.5版本,API9 Stage模型
导入@ohos.display包,通过getDefaultDisplay方法获取。
示例:
```
import display from '@ohos.display';
display.getDefaultDisplay((err, data) => {
if (err.code) {
console.error('Test Failed to obtain the default display object. Code: ' + JSON.stringify(err));
return;
}
console.info('Test Succeeded in obtaining the default display object. Data:' + JSON.stringify(data));
console.info('Test densityDPI:' + JSON.stringify(data.densityDPI));
});https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-device-info.md)
```
zh-cn/application-dev/faqs/faqs-file-management.md
0 → 100644
浏览文件 @
5602f6f6
# 文件管理开发常见问题
## 调用媒体库getAlbums方法,没有收到返回,也没有捕获到异常是为什么
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
getAlbums方法需要权限:ohos.permission.READ_MEDIA,从
[
OpenHarmony权限定义列表
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/permission-list.md
)
查询知道ohos.permission.READ_MEDIA权限是需要用户授权。
1.
在module.json5中配置权限:
```
"requestPermissions": [
{
"name": "ohos.permission.READ_MEDIA"
}
]
```
2.
在MainAbility.ts -
>
onWindowStageCreate页面加载前需要增加用户授权代码:
```
private requestPermissions() {
let permissionList: Array<string> = [
"ohos.permission.READ_MEDIA"
];
this.context.requestPermissionsFromUser(permissionList)
.then(data => {
console.info(`request permission data result = ${data.authResults}`)
})
.catch(err => {
console.error(`fail to request permission error:${err}`)
})
}
```
zh-cn/application-dev/faqs/faqs-graphics.md
0 → 100644
浏览文件 @
5602f6f6
# 图形图像开发常见问题
## 调用window实例的setSystemBarProperties接口时,设置isStatusBarLightIcon和isNavigationBarLightIcon属性不生效
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
状态栏字体高亮属性的本质就只是让字体变成白色。调用window实例的setSystemBarProperties接口时,如果设置了状态栏内容颜色statusBarContentColor,就以开发者设置的颜色为准,isStatusBarLightIcon状态栏字体高亮属性就不生效;同理,如果设置了导航栏内容颜色navigationBarContentColor,isNavigationBarLightIcon导航栏字体高亮属性就不生效。
## 如何设置系统状态栏样式
适用于:OpenHarmony SDK 3.2.3.5版本,API9 Stage模型
导入
\@
ohos.window模块,开发者可以使用window.setSystemBarProperties()接口设置状态栏样式属性,达到自定义样式的效果。
zh-cn/application-dev/faqs/faqs-hdc-std.md
0 → 100644
浏览文件 @
5602f6f6
# hdc_std命令使用常见问题
## 日志的常用命令
适用于:OpenHarmony SDK 3.2.2.5版本
清理日志:hdc_std shell hilog -r
调大缓存到20M:hdc_std shell hilog -G 20M
抓取日志:hdc_std shell hilog
>
log.txt
## 日志限流怎么规避
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
-
关闭日志限流 hdc_std shell hilog -Q pidoff
-
关闭隐私标志 hdc_std shell hilog -p off
-
增加日志buffer hdc_std shell hilog -G 200M
-
关闭全局日志,只打开自己领域的日志 hdc_std shell hilog –b D –D 0xd0xxxxx
执行完命令后重启DevEco Studio。
## 应用如何打印日志是使用hilog还是console,hilog接口参数domain的设置范围是什么?
适用于:OpenHarmony SDK 3.2.2.5版本
推荐使用
[
hilog日志系统
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-hilog.md
)
进行日志打印,接口参数domain的设置范围可以参考
[
开发指南
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-hilog.md#hilogisloggable
)
。
## hilog日志打印长度限制是多少,是否可以配置
适用于:OpenHarmony SDK 3.2.2.5版本
日志打印的长度限制为1024,该长度不能配置。
## 为什么有时候直接用IDE安装HAP包到开发板上无法打开?
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
请检查sdk和开发板烧录的系统版本是否一致,推荐取同一天的sdk和系统版本。
## 如何通过hdc命令上传文件
适用于:OpenHarmony SDK 3.2.2.5版本
可以使用hdc_std file send上传文件。
## 如何让RK3568开发板不熄屏?
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
输入命令hdc_std shell "power-shell setmode 602"
## 如何通过命令启动Ability?
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
输入命令hdc_std shell aa start -a AbilityName -b bundleName -m moduleName
zh-cn/application-dev/faqs/faqs-ide.md
0 → 100644
浏览文件 @
5602f6f6
# IDE使用常见问题
## 如何解决报错“npm ERR! code SELF_SIGNED_CERT_IN_CHAIN”?
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
1.
在Dev Eco Studio terminal中执行npm config set strict-ssl=false;
2.
在Dev Eco Studio terminal中执行npm install。
## 手工更新DevEco的SDK后,编译HAP报错“Cannot find module 'xxx\ets\x.x.x.x\build-tools\ets-loader\node_modules\webpack\bin\webpack.js'”
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
1.
到SDK的ets
\x
.x.x.x
\b
uild-tools
\e
ts-loader目录下执行npm install;
2.
到SDK的js
\x
.x.x.x
\b
uild-tools
\a
ce-loader目录下执行npm install。 完成步骤后重新编辑既可。
zh-cn/application-dev/faqs/faqs-native.md
0 → 100644
浏览文件 @
5602f6f6
# Native API使用常见问题
## 运行Native HAP的时候,导入的命名空间报错Obj is not a valid object
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
检查模块根目录(注意不是工程根目录)下的build-profile.json5文件,如果设备是32位,需要在abiFilters参数中配置armeabi-v7a,如果设备是64位,需要在abiFilters参数中配置arm64-v8a。
## NAPI开发的C++代码中,如何获取到模块 package.json 文件中的 “version” 值?
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
1.
在编译工具Hvigor脚本文件hvigorfile.js中,通过subModule.getPackageJsonPath方法获取module中package.json文件位置;
2.
使用nodejs能力读取package.json文件中version字段,写入build-profile.json5文件buildOption.cppFlags字段;
示例:
```
// module hvigorfile.js
const subModule = require('@ohos/hvigor')(__filename)
const fs = require("fs-extra")
const path = require("path")
const packageJsonPath = subModule.getPackageJsonPath()
const buildProfilePath = path.resolve(packageJsonPath, '../build-profile.json5')
const packageJsonData = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'))
let buildProfileData = fs.readFileSync(buildProfilePath, 'utf8')
buildProfileData = buildProfileData.replace(/\"cppFlags\"\:(.*)\,/, `"cppFlags": "-D NWEBEX_VERSION=${packageJsonData.version}",`)
fs.writeFileSync(buildProfilePath, buildProfileData, 'utf8')
const ohosPlugin = require('@ohos/hvigor-ohos-plugin').hapTasks(subModule) // 该插件执行了C++编译任务,读取了build-profile.json5文件
module.exports = {
ohos: ohosPlugin
}
```
```
// hellp.cpp 读取
#define _NWEBEX_VERSION(v) #v
#define _NWEBEX_VER2STR(v) _NWEBEX_VERSION(v)
static napi_value Add(napi_env env, napi_callback_info info)
{
napi_value fixed_version_value = nullptr;
napi_create_string_utf8(env, _NWEBEX_VER2STR(NWEBEX_VERSION), NAPI_AUTO_LENGTH, &fixed_version_value);
return fixed_version_value;
}
```
zh-cn/application-dev/faqs/faqs-third-party-library.md
0 → 100644
浏览文件 @
5602f6f6
# 三四方库使用常见问题
## 报错“Stage model module … does not support including OpenHarmony npm packages or modules in FA model. OpenHarmony build tasks will not be executed, and OpenHarmony resources will not be packed. ”是什么意思?
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
三四方件未适配API9 Stage模型,无法使用。
zh-cn/application-dev/faqs/faqs-ui-ets.md
0 → 100644
浏览文件 @
5602f6f6
# UI框架(eTS)开发常见问题
## TS语言在生成器函数中编译失败,有哪些使用限制?
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
TS语言的使用在生成器函数中存在以下限制:
-
表达式仅允许在字符串(${expression})、if条件、ForEach的参数和组件的参数中使用;
-
这些表达式中的任何一个都不能导致任何应用程序状态变量(
\@
State、
\@
Link、
\@
Prop)的改变,否则会导致未定义和潜在不稳定的框架行为;
-
生成器函数内部不能有局部变量。
上述限制都不适用于事件处理函数(例如onClick)的匿名函数实现。
错误示例:
```
build() {
let a: number = 1 // invalid: variable declaration not allowed
Column() {
Text('Hello ${this.myName.toUpperCase()}') // ok.
ForEach(this.arr.reverse(), ..., ...) // invalid: Array.reverse modifies the @State array varible in place
}
buildSpecial() // invalid: no function calls
Text(this.calcTextValue()) // this function call is ok.
}
```
## 在Stage模型下,如何通过router实现页面跳转
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
1.
对于通过页面路由router实现页面跳转,首先要在main_pages.json配置文件中将所有跳转的页面加入pages列表;
2.
页面路由需要在页面渲染完成之后才能调用,在onInit和onReady生命周期中页面还处于渲染阶段,禁止调用页面路由方法。
## router通过调用push方法进堆栈的page是否会被回收
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
调用push进入堆栈的page不回收,调用back方法出栈后可以被回收。
## 如何动态替换掉资源文件中的“%s”占位符
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
在应用中,通过"$r('app.string.xx')"的形式引用应用资源,$r的第二个参数可用于替换%s占位符。
示例:
```
build() {
//do something
//引用的string资源,$r的第二个参数用于替换%s
Text($r('app.string.entry_desc','aaa'))
.fontSize(100)
.fontColor(Color.Black)
//do something
}
```
## 如何读取Resource中的xml文件并转化为String类型
适用于:OpenHarmony SDK 3.2.2.5版本, API9 Stage模型
1.
通过resourceManager的RawFile接口获取Uint8Array格式数据。
2.
通过String.fromCharCode将Uint8Array格式数据转化为String类型。
参考文档:
[
资源管理
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-resource-manager.md
)
示例:
```
resourceManager.getRawFile(path, (error, value) => {
if (error != null) {
console.log("error is " + error);
} else {
let rawFile = value;
let xml = String.fromCharCode.apply(null, rawFile)
}
});
```
## 如何将Resource资源对象转成string类型
适用于:OpenHarmony SDK 3.2.3.5版本,API9 Stage模型
通过
\@
ohos.resourceManager模块 resourceManager.getString()方法获取字符串。
参考文档:
[
资源管理
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-resource-manager.md#getstring
)
## class全局静态变量无法使用的问题
适用于:OpenHarmony SDK 3.2.3.5版本,API9 Stage模型
Page和Ability打包后会对import的对象分别形成两个不同的闭包,即打包出两个Global对象。因此,所引用的静态变量并不是同一对象,所以无法通过class静态变量方式定义全局变量。建议使用AppStorage进行全局变量管理。
参考文档:
[
应用程序的数据存储
](
https://docs.openharmony.cn/pages/v3.2Beta/zh-cn/application-dev/ui/ts-application-states-appstorage.md/
)
## Stage模型下如何获取资源
适用于:OpenHarmony SDK 3.2.3.5版本,API9 Stage模型
Stage模型支持了通过context获取resourceManager对象的方式,再调用其内部获取资源的接口,无需再导入包,此方式FA模型不适用。
示例:
```
const context = getContext(this) as any
context
.resourceManager
.getString($r('app.string.entry_desc').id)
.then(value => {
this.message = value.toString()
})
```
## 如何将容器定位到屏幕的最底部?
适用于:OpenHarmony SDK 3.2.3.5版本, API9 Stage模型
可以使用Stack堆叠容器,设置子组件在容器内的最底部。
示例:
```
build() {
Stack({alignContent : Alignment.Bottom}) {
//容器位于最底部
Stack() {
Column()
.width('100%')
.height('100%')
.backgroundColor(Color.Yellow)
}
.width('100%')
.height('10%')
}
.width('100%')
.height('100%')
.backgroundColor('rgba(255,255,255, 0)')
}
```
## CustomDialog是否支持在TS文件中使用?
适用于:OpenHarmony SDK 3.2.2.5版本,API9 Stage模型
不支持,CustomDialog当前只支持在eTS的Page中使用。
参考文档:
[
自定义弹窗
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-methods-custom-dialog-box.md
)
## 如何将CustomDialog中的变量传递给Page页面中的变量?
适用于:OpenHarmony SDK 3.2.2.5版本,API9 Stage模型
利用自定义的回调函数,当点击弹窗的confirm按钮时,将data数据从自定义弹窗组件中传递给当前的page的页面。
示例:
```
// CustomDialog 组件
@CustomDialog
struct MyDialog {
controller: CustomDialogController
title: string
data: string
cancel: () => void
confirm: (data: string) => void
Button('confirm')
.onClick(() => {
this.controller.close()
this.data = 'test'
this.confirm(this.data)
}).backgroundColor(0xffffff).fontColor(Color.Red)
// Page页面
@Entry
@Component
struct DialogTest {
dialogController: CustomDialogController = new CustomDialogController({
builder: MyDialog({ title:'标题自定义',cancel: this.onCancel,
confirm: this.onAccept.bind(this) }), // 绑定自定义的回调函数
cancel: this.existApp,
autoCancel: true
})
onAccept(data:string) {
console.info('Callback when the second button is clicked ' + data)
}
}
```
## List组件上添加了Text组件后,List组件无法拖动到底部
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
在List的父容器加上代码layoutWeight(1)。原理:List属于可滚动容器组件,默认高度是占满全屏幕高度,当出现其他固定高度的组件占领了屏幕的部分高度时,需要开发人员显性的指定List组件占满剩余高度,而不是全屏幕高度。
## 栅格布局子组件如何居中?
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
GridContainer内子组件默认水平左对齐,居中显示可以参考以下处理方式:
内部嵌套布局组件Row,设置Row属性justifyContent(FlexAlign.Center),内部嵌套子组件可保持居中显示,参考
[
栅格布局
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/ui-ts-layout-grid-container.md
)
文档。
示例:
```
GridContainer({ sizeType: SizeType.SM, columns: 12 }) {
Row() {
Text('1')
.useSizeType({
sm: { span: 4, offset: 0 },
})
.backgroundColor(0x46F2B4)
}.justifyContent(FlexAlign.Center) // 该属性设置使子组件居中显示
}
```
## 如何获取状态栏和导航栏高度?
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
在加载窗口内容之前,采用systemAvoidAreaChange事件监听。
示例:
```
// MainAbility.ts
import
window
from
'@ohos.window'
;
/**
* 设置沉浸式窗口,并获取状态栏和导航栏高度
* @param mainWindow 主窗口对象
*/
async
function
enterImmersion
(
mainWindow
:
window
.
Window
)
{
mainWindow
.
on
(
"systemAvoidAreaChange"
,
(
area
:
window
.
AvoidArea
)
=>
{
AppStorage
.
SetOrCreate
<
number
>
(
"topHeight"
,
area
.
topRect
.
height
);
AppStorage
.
SetOrCreate
<
number
>
(
"bottomHeight"
,
area
.
bottomRect
.
height
);
})
await
mainWindow
.
setFullScreen
(
true
)
await
mainWindow
.
setSystemBarEnable
([
"status"
,
"navigation"
])
await
mainWindow
.
setSystemBarProperties
({
navigationBarColor
:
"#00000000"
,
statusBarColor
:
"#00000000"
,
navigationBarContentColor
:
"#FF0000"
,
statusBarContentColor
:
"#FF0000"
})
}
export
default
class
MainAbility
extends
Ability
{
// do something
async
onWindowStageCreate
(
windowStage
:
window
.
WindowStage
)
{
let
mainWindow
=
await
windowStage
.
getMainWindow
()
await
enterImmersion
(
mainWindow
)
windowStage
.
loadContent
(
'pages/index'
)
}
// do something
}
```
## 如何在eTS代码中执行Web组件内的JS函数?
适用于:OpenHarmony SDK 3.2.3.5版本, API9 Stage模型
通过WebController中runJavaScript方法异步执行JavaScript脚本,并通过回调方式返回脚本执行的结果。注意:runJavaScript需要在loadUrl完成后,比如onPageEnd中调用。
参考文档:
[
Web
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-web.md
)
## 在容器组件嵌套的场景下,如何解决手势拖拽事件出现错乱的问题?
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
gesture的属性distance默认值是5,把gesture的属性distance设成1就可以解决。
zh-cn/application-dev/faqs/faqs-ui-js.md
0 → 100644
浏览文件 @
5602f6f6
# UI框架(JS)开发常见问题
## 如何取出xml文件中对应的字段
适用于:OpenHarmony SDK 3.2.3.5版本, API9 Stage模型
convertxml中convert方法提供了转换xml文本为JavaScript对象的能力。
示例:
```
import convertxml from '@ohos.convertxml';
// 代码片段
xml =
'<?xml version="1.0" encoding="utf-8"?>' +
'<note importance="high" logged="true">' +
' <title>Happy</title>' +
' <todo>Work</todo>' +
' <todo>Play</todo>' +
'</note>';
let conv = new convertxml.ConvertXML();
// 转换选项, 参考文档使用
let options = {trim : false, declarationKey:"_declaration",
instructionKey : "_instruction", attributesKey : "_attributes",
textKey : "_text", cdataKey:"_cdata", doctypeKey : "_doctype",
commentKey : "_comment", parentKey : "_parent", typeKey : "_type",
nameKey : "_name", elementsKey : "_elements"}
let result:any = conv.convert(xml, options) // 将xml文本转为JS对象
console.log('Test: ' + JSON.stringify(result))
console.log('Test: ' + result._declaration._attributes.version) // xml代码片段version字段信息
console.log('Test: ' + result._elements[0]._elements[0]._elements[0]._text) // xml代码片段title字段内容
```
参考文档:
[
xml转换JavaScript
](
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-convertxml.md
)
## JS、TS和eTS的区别
适用于:OpenHarmony SDK 3.2.3.5版本,API9 Stage模型
-
JS:Web 的编程语言。具有轻量级,弱类型等特点。
-
TS:TS是JS的超集,拓展了JS的语法。有明确的类型与更多面向对象的内容如接口,枚举等。
-
eTS:OpenHarmony UI开发框架语言,是对TS的扩展,通过声明式开发范式实现UI界面。
## 如何将时间转为时分秒格式
示例:
```
export default class DateTimeUtil{
/**
* 时分秒
*/
getTime() {
const DATETIME = new Date()
return this.concatTime(DATETIME.getHours(),DATETIME.getMinutes(),DATETIME.getSeconds())
}
/**
* 年月日
*/
getDate() {
const DATETIME = new Date()
return this.concatDate(DATETIME.getFullYear(),DATETIME.getMonth()+1,DATETIME.getDate())
}
/**
* 日期不足两位补充0
* @param value-数据值
*/
fill(value:number) {
return (value> 9 ? '' : '0') + value
}
/**
* 年月日格式修饰
* @param year
* @param month
* @param date
*/
concatDate(year: number, month: number, date: number){
return `${year}${this.fill(month)}${this.fill(date)}`
}
/**
* 时分秒格式修饰
* @param hours
* @param minutes
* @param seconds
*/
concatTime(hours:number,minutes:number,seconds:number){
return `${this.fill(hours)}${this.fill(minutes)}${this.fill(seconds)}`
}
}
```
zh-cn/application-dev/faqs/figures/zh-cn_image_0000001361254285.png
0 → 100644
浏览文件 @
5602f6f6
20.1 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录