dialogs.input 仅允许输入数字,不准输入字符串
第 1 条补充
· 1 个月前
dialogs.input输入了数字和字符串程序闪退
第 2 条补充
· 1 个月前
floaty.window 如何定一个圆形按钮
回答
在Hamibot中,dialogs.input
本身不会强制限制输入类型,但可以通过以下方式实现仅接收数字输入:
// 文档地址 https://docs.hamibot.com/
dialogs.input('请输入数字', '0').then(function(input) {
var num = parseInt(input);
if (!isNaN(num)) {
toast("您输入的数字是:" + num);
} else {
toast("输入无效,请输入数字");
}
});
实现原理:
- 使用
parseInt()
尝试将输入转换为整数 - 通过
isNaN()
检查转换结果是否有效 - 在回调中添加类型验证逻辑
如果需要更严格的校验(如浮点数/正整数),可扩展验证逻辑:
// 验证正整数
if (/^\d+$/.test(input)) {
// 有效数字
} else {
// 错误处理
}
补充回答 1
在Hamibot中使用dialogs.input
时,若输入内容导致程序闪退,通常是因为未正确处理输入类型或异常情况。以下是修复方案:
// 文档地址 https://docs.hamibot.com/
try {
var input = dialogs.input('请输入内容', '默认值');
// 显式类型判断
if (typeof input === 'number') {
toast("您输入的是数字: " + input);
} else if (typeof input === 'string') {
toast("您输入的是字符串: " + input);
} else {
toast("输入类型异常");
}
} catch (e) {
toast("发生错误: " + e);
}
关键点说明:
- 类型验证:通过
typeof
判断输入类型,避免直接使用可能非字符串的值 - 异常捕获:用try-catch包裹代码,防止eval执行时抛出的异常导致程序崩溃
- 安全处理:若需严格限制数字输入,可增加正则校验:
if (/^\d+$/.test(input)) { // 仅允许数字
// ...
} else {
toast("请输入纯数字");
}
注意事项:
dialogs.input
会自动对输入内容执行eval()
,若输入非法表达式(如abc
)会抛出异常- 建议优先使用
dialogs.rawInput
获取原始字符串,再自行处理逻辑 - 若需数字输入,可使用
parseInt()
/parseFloat()
转换并添加校验
补充回答 2
在 Hamibot 的 floaty.window
中创建圆形按钮,可以通过以下步骤实现:
实现思路
- 使用
floaty.window
创建悬浮窗布局 - 通过 XML 布局定义按钮区域
- 使用
android:background
设置圆形背景 - 添加点击事件监听
示例代码
// 文档地址 https://docs.hamibot.com/
var w = floaty.window(
<vertical gravity="center">
<!-- 圆形按钮 -->
<view id="circleBtn"
w="100"
h="100"
bg="#FF0000"
margin="50"
android:background="@drawable/circle" />
</vertical>
);
// 添加点击事件
w.circleBtn.click(function() {
toast("圆形按钮被点击了!");
});
关键点说明
- 宽高设置:通过
w="100"
和h="100"
确保按钮为正方形 - 圆形背景:
- 需要提前在
res/drawable
目录下创建circle.xml
文件 circle.xml
内容示例:<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FF0000" /> <corners android:radius="50dp" /> </shape>
- 需要提前在
- 兼容性说明:
- 如果无法直接使用
android:background
,可通过 UI 模块动态创建 View:var view = new android.widget.Button(context); view.setLayoutParams(new android.widget.LinearLayout.LayoutParams(100, 100)); view.setBackground(new android.graphics.drawable.ShapeDrawable(new android.graphics.drawable.shapes.OvalShape())); view.setBackgroundColor(0xFFFF0000); w.addView(view);
- 如果无法直接使用
注意事项
- XML 中的
android:background
需要正确配置 drawable 资源 - 若需动态修改按钮样式,建议使用
ui.run()
在 UI 线程操作 - 圆角半径值需根据按钮尺寸调整,确保完全圆形
ℹ️ 本回答由 AI 生成,内容仅供参考