Closed libern closed 3 years ago
经过测试未能复现您所描述的问题。测试代码如下:
private void showSecondDialog1() {
SpannableString spannableString = new SpannableString("这里是一段文本,点击链接");
spannableString.setSpan(new ClickableSpan(){
@Override
public void onClick(@NonNull View widget) {
showSecondDialog2();
}
},9, spannableString.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
MessageDialog.show("标题1", spannableString, "确定");
}
private void showSecondDialog2() {
SpannableString spannableString = new SpannableString("这里是另一段一段文本,再次点击链接");
spannableString.setSpan(new ClickableSpan(){
@Override
public void onClick(@NonNull View widget) {
showSecondDialog1();
}
},14, spannableString.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
MessageDialog.show("标题2", spannableString, "确定");
}
测试设备:Pixel5(Android 12)
另外备注:测试过程种发现需要额外在消息文本的TextView前设置.setMovementMethod(LinkMovementMethod.getInstance());
你好,showSecondDialog2,就显示一个普通的dialog可以吗?就是“你确认吗?”。确认或取消两个按钮。
就是2个dialog的body,一个是spannablestring,一个是普通的string
不理解你的意思,MessageDialog默认只有一个消息内容组件,你可以使用setCustomView自定义布局实现更多功能。
就是第二个dialog使用这种最简单的方式创建。message 是null的情况
MessageDialog.show("拒绝协议并退出使用?", null,"确认", “取消”)
很抱歉,依然无法复现您所描述的问题,测试代码如下:
private void showSecondDialog1() {
SpannableString spannableString = new SpannableString("这里是一段文本,点击链接");
spannableString.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
showSecondDialog2();
}
}, 9, spannableString.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
MessageDialog.show("标题1", spannableString, "确定");
}
private void showSecondDialog2() {
MessageDialog.show("标题2", null, "确定")
.setOkButton(new OnDialogButtonClickListener<MessageDialog>() {
@Override
public boolean onClick(MessageDialog baseDialog, View v) {
showSecondDialog1();
return false;
}
});
}
测试使用机器Pixel5(Android12 DP3),录屏如下:
如图显示,需要先关闭标题1的显示,然后再显示标题2
在新版中,测试没问题了。应该是旧版本的问题。
第一个dialog里包含了SpannnableString的描述,里面的文字里有链接可以有点击效果。
使用showDialog()来显示第一个dialog,此时的文字链接点击有onClick回调效果。
当第一个dialog,点击取消的时候,显示一个二次确认弹窗,
在这个第二次确认弹窗dialog的取消,setCancelButton,会直接重新调用showDialog()显示第一个dialog,此时显示的dialog正确显示下划线等外观,然而,链接却没有onClick点击效果。
状况描述: 如果在第二次弹窗的取消上直接执行showDialog(),则第一个dialog【无】点击效果。 如果在第二次弹窗的取消上添加异步0.1秒执行showDialog(),则第一个dialog【有】点击效果。 如果在第二次弹窗的onDismiss回调上直接执行showDialog(),则第一个dialog【无】点击效果。
不知道具体2个dialog显示是否有公用情况或者什么原因,希望我这个描述可以让你明白我的问题。