You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Cursive对话框内的按钮关闭对话框?

如何阻止Cursive对话框内的按钮关闭对话框?

你好!看起来你遇到了Cursive对话框的一个常见小困惑——内部按钮点击后意外关闭了对话框,但你希望它们执行操作后保持对话框打开对吧?

首先得明确一点:Cursive里,通过Dialog::button()添加的底部按钮(比如你的Save和Cancel),默认点击后会自动关闭对话框并执行回调;但对话框内容区(LinearLayout里)的按钮,默认是不会自动关闭对话框的。你现在遇到的情况,要么是旧版本Cursive的特殊行为,要么是某些隐性的逻辑触发了关闭。

解决方法其实很简单,只要确保内部按钮的回调里不执行任何关闭对话框的操作就行。比如你可以把按钮的代码改成这样:

Button::new("Default", |s| {
    // 在这里写你点击Default按钮要执行的逻辑,比如重置配置到默认值
    // 举个例子:reset_config_to_default();
    
    // 注意:不要调用s.pop_layer()或者任何会移除对话框的方法
})
Button::new("Wipe", |s| {
    // 这里写Wipe按钮的逻辑,比如清空配置数据
    // 比如:wipe_config_data();
})

如果你的回调是空的(像你原来的代码那样)还会关闭对话框,那可以检查这几点:

  • 是不是不小心把这些内部按钮设成了对话框的默认按钮?比如调用了default_button()方法,这会让按钮触发对话框的关闭逻辑,避免这么做就行。
  • 确认你的Cursive版本是最新的,旧版本可能存在一些行为bug,更新到最新版大概率能解决问题。

总的来说,核心就是:内部按钮的回调只处理你的业务逻辑,不要碰任何关闭对话框的方法,对话框就会一直保持打开状态啦。

备注:内容来源于stack exchange,提问作者fadedbee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:09:28