pub struct RadioButton { /* private fields */ }Expand description
A RadioButton in a group
Implementations§
Source§impl RadioButton
impl RadioButton
Sourcepub fn new(
activity: &mut Activity,
text: &str,
parent: Option<i64>,
) -> Result<Self>
pub fn new( activity: &mut Activity, text: &str, parent: Option<i64>, ) -> Result<Self>
Create a new RadioButton (unchecked by default)
Sourcepub fn new_with_checked(
activity: &mut Activity,
text: &str,
parent: Option<i64>,
checked: bool,
) -> Result<Self>
pub fn new_with_checked( activity: &mut Activity, text: &str, parent: Option<i64>, checked: bool, ) -> Result<Self>
Create a new RadioButton with specified checked state
Sourcepub fn id(&self) -> i64
pub fn id(&self) -> i64
Get the view ID
Examples found in repository?
examples/radio_demo_v2.rs (line 240)
8fn main() -> Result<()> {
9 println!("=== RadioGroup + RadioButton 单选演示 (新库版本) ===\n");
10
11 // 创建 Activity(对话框模式)
12 let mut activity = Activity::new(true)?;
13 println!("✓ 连接建立\n");
14
15 // 创建主布局
16 let layout = activity.create_linear_layout(None)?;
17
18 // 创建标题
19 let title = activity.create_text_view("📦 选择配送方式", Some(layout.id()))?;
20 title.set_text_size(&mut activity, 26)?;
21 title.view().set_margin(&mut activity, 10)?;
22 title.view().set_height_wrap_content(&mut activity)?;
23 title.view().set_linear_layout_params(&mut activity, 0, None)?;
24
25 // ========== 第一个 RadioGroup - 配送方式 ==========
26 let section1 = activity.create_text_view("配送方式:", Some(layout.id()))?;
27 section1.set_text_size(&mut activity, 18)?;
28 section1.view().set_margin(&mut activity, 8)?;
29 section1.view().set_height_wrap_content(&mut activity)?;
30 section1.view().set_linear_layout_params(&mut activity, 0, None)?;
31
32 let radio_group1 = activity.create_radio_group(Some(layout.id()))?;
33 radio_group1.view().set_height_wrap_content(&mut activity)?;
34 radio_group1.view().set_linear_layout_params(&mut activity, 0, None)?;
35
36 // RadioButton 1.1 - 标准配送(默认选中)
37 let radio1_1 = activity.create_radio_button_checked(
38 "📮 标准配送 (免费, 3-5天)",
39 Some(radio_group1.id()),
40 true
41 )?;
42 radio1_1.view().set_height_wrap_content(&mut activity)?;
43 radio1_1.view().set_linear_layout_params(&mut activity, 0, None)?;
44
45 // RadioButton 1.2 - 快速配送
46 let radio1_2 = activity.create_radio_button_checked(
47 "🚚 快速配送 (¥15, 1-2天)",
48 Some(radio_group1.id()),
49 false
50 )?;
51 radio1_2.view().set_height_wrap_content(&mut activity)?;
52 radio1_2.view().set_linear_layout_params(&mut activity, 0, None)?;
53
54 // RadioButton 1.3 - 当日达
55 let radio1_3 = activity.create_radio_button_checked(
56 "⚡ 当日达 (¥30, 当天送达)",
57 Some(radio_group1.id()),
58 false
59 )?;
60 radio1_3.view().set_height_wrap_content(&mut activity)?;
61 radio1_3.view().set_linear_layout_params(&mut activity, 0, None)?;
62
63 // 分隔线
64 let divider1 = activity.create_text_view("━━━━━━━━━━━━━━━━━━━━", Some(layout.id()))?;
65 divider1.view().set_height_wrap_content(&mut activity)?;
66 divider1.view().set_linear_layout_params(&mut activity, 0, None)?;
67
68 // ========== 第二个 RadioGroup - 支付方式 ==========
69 let section2 = activity.create_text_view("支付方式:", Some(layout.id()))?;
70 section2.set_text_size(&mut activity, 18)?;
71 section2.view().set_margin(&mut activity, 8)?;
72 section2.view().set_height_wrap_content(&mut activity)?;
73 section2.view().set_linear_layout_params(&mut activity, 0, None)?;
74
75 let radio_group2 = activity.create_radio_group(Some(layout.id()))?;
76 radio_group2.view().set_height_wrap_content(&mut activity)?;
77 radio_group2.view().set_linear_layout_params(&mut activity, 0, None)?;
78
79 // RadioButton 2.1 - 微信支付(默认选中)
80 let radio2_1 = activity.create_radio_button_checked(
81 "💚 微信支付",
82 Some(radio_group2.id()),
83 true
84 )?;
85 radio2_1.view().set_height_wrap_content(&mut activity)?;
86 radio2_1.view().set_linear_layout_params(&mut activity, 0, None)?;
87
88 // RadioButton 2.2 - 支付宝
89 let radio2_2 = activity.create_radio_button_checked(
90 "💙 支付宝",
91 Some(radio_group2.id()),
92 false
93 )?;
94 radio2_2.view().set_height_wrap_content(&mut activity)?;
95 radio2_2.view().set_linear_layout_params(&mut activity, 0, None)?;
96
97 // RadioButton 2.3 - 货到付款
98 let radio2_3 = activity.create_radio_button_checked(
99 "💰 货到付款",
100 Some(radio_group2.id()),
101 false
102 )?;
103 radio2_3.view().set_height_wrap_content(&mut activity)?;
104 radio2_3.view().set_linear_layout_params(&mut activity, 0, None)?;
105
106 // 分隔线
107 let divider2 = activity.create_text_view("━━━━━━━━━━━━━━━━━━━━", Some(layout.id()))?;
108 divider2.view().set_height_wrap_content(&mut activity)?;
109 divider2.view().set_linear_layout_params(&mut activity, 0, None)?;
110
111 // ========== 第三个 RadioGroup - 发票类型 ==========
112 let section3 = activity.create_text_view("发票类型:", Some(layout.id()))?;
113 section3.set_text_size(&mut activity, 18)?;
114 section3.view().set_margin(&mut activity, 8)?;
115 section3.view().set_height_wrap_content(&mut activity)?;
116 section3.view().set_linear_layout_params(&mut activity, 0, None)?;
117
118 let radio_group3 = activity.create_radio_group(Some(layout.id()))?;
119 radio_group3.view().set_height_wrap_content(&mut activity)?;
120 radio_group3.view().set_linear_layout_params(&mut activity, 0, None)?;
121
122 // RadioButton 3.1 - 不需要发票(默认选中)
123 let radio3_1 = activity.create_radio_button_checked(
124 "❌ 不需要发票",
125 Some(radio_group3.id()),
126 true
127 )?;
128 radio3_1.view().set_height_wrap_content(&mut activity)?;
129 radio3_1.view().set_linear_layout_params(&mut activity, 0, None)?;
130
131 // RadioButton 3.2 - 电子发票
132 let radio3_2 = activity.create_radio_button_checked(
133 "📧 电子发票",
134 Some(radio_group3.id()),
135 false
136 )?;
137 radio3_2.view().set_height_wrap_content(&mut activity)?;
138 radio3_2.view().set_linear_layout_params(&mut activity, 0, None)?;
139
140 // RadioButton 3.3 - 纸质发票
141 let radio3_3 = activity.create_radio_button_checked(
142 "📄 纸质发票 (+¥5)",
143 Some(radio_group3.id()),
144 false
145 )?;
146 radio3_3.view().set_height_wrap_content(&mut activity)?;
147 radio3_3.view().set_linear_layout_params(&mut activity, 0, None)?;
148
149 // 分隔线
150 let divider3 = activity.create_text_view("━━━━━━━━━━━━━━━━━━━━", Some(layout.id()))?;
151 divider3.view().set_margin(&mut activity, 8)?;
152 divider3.view().set_height_wrap_content(&mut activity)?;
153 divider3.view().set_linear_layout_params(&mut activity, 0, None)?;
154
155 // 状态显示
156 let status = activity.create_text_view(
157 "当前选择:\n配送: 标准配送\n支付: 微信支付\n发票: 不需要发票",
158 Some(layout.id())
159 )?;
160 status.view().set_margin(&mut activity, 10)?;
161 status.view().set_height_wrap_content(&mut activity)?;
162 status.view().set_linear_layout_params(&mut activity, 0, None)?;
163 status.set_text_color(&mut activity, 0xFF2196F3u32 as i32)?;
164
165 // 总价显示
166 let price = activity.create_text_view("总计: ¥0", Some(layout.id()))?;
167 price.set_text_size(&mut activity, 22)?;
168 price.view().set_margin(&mut activity, 10)?;
169 price.view().set_height_wrap_content(&mut activity)?;
170 price.view().set_linear_layout_params(&mut activity, 0, None)?;
171 price.set_text_color(&mut activity, 0xFFFF5722u32 as i32)?;
172
173 // 确认按钮
174 let confirm_btn = activity.create_button("✅ 确认订单", Some(layout.id()))?;
175 confirm_btn.view().set_margin(&mut activity, 10)?;
176 confirm_btn.view().set_height_wrap_content(&mut activity)?;
177 confirm_btn.view().set_linear_layout_params(&mut activity, 0, None)?;
178
179 println!("✓ 界面创建完成\n");
180 println!("━━━━━━━━━━━━━━━━━━━━━━");
181 println!("提示:");
182 println!(" • 每组只能选择一个选项");
183 println!(" • 选择会自动更新总价");
184 println!(" • 点击 '确认订单' 提交");
185 println!("━━━━━━━━━━━━━━━━━━━━━━\n");
186
187 // 状态跟踪
188 let delivery_options = ["标准配送", "快速配送", "当日达"];
189 let delivery_prices = [0, 15, 30];
190 let mut delivery_index = 0;
191
192 let payment_options = ["微信支付", "支付宝", "货到付款"];
193 let mut payment_index = 0;
194
195 let invoice_options = ["不需要发票", "电子发票", "纸质发票"];
196 let invoice_prices = [0, 0, 5];
197 let mut invoice_index = 0;
198
199 // 更新显示的辅助函数
200 let update_display = |activity: &mut Activity,
201 status: &TextView,
202 price: &TextView,
203 del_idx: usize,
204 pay_idx: usize,
205 inv_idx: usize| -> Result<()> {
206 let status_text = format!(
207 "当前选择:\n配送: {}\n支付: {}\n发票: {}",
208 delivery_options[del_idx],
209 payment_options[pay_idx],
210 invoice_options[inv_idx]
211 );
212 status.set_text(activity, &status_text)?;
213
214 let total = delivery_prices[del_idx] + invoice_prices[inv_idx];
215 let price_text = format!("总计: ¥{}", total);
216 price.set_text(activity, &price_text)?;
217
218 Ok(())
219 };
220
221 // 事件循环
222 loop {
223 let event = read_message(activity.event_stream())?;
224 let event_type = event["type"].as_str().unwrap_or("");
225 let event_value = &event["value"];
226
227 match event_type {
228 "destroy" => {
229 // Activity 已被系统销毁,直接退出即可
230 // 不要调用 activity.finish(),因为 Activity 已经不存在了
231 println!("\n✓ Activity 已关闭");
232 return Ok(());
233 },
234 "selected" => {
235 let group_id = event_value["id"].as_i64().unwrap_or(-1);
236 let selected_id = event_value["selected"].as_i64().unwrap_or(-1);
237
238 if group_id == radio_group1.id() {
239 // 配送方式组
240 if selected_id == radio1_1.id() {
241 delivery_index = 0;
242 println!("📮 选择: 标准配送");
243 } else if selected_id == radio1_2.id() {
244 delivery_index = 1;
245 println!("🚚 选择: 快速配送 (+¥15)");
246 } else if selected_id == radio1_3.id() {
247 delivery_index = 2;
248 println!("⚡ 选择: 当日达 (+¥30)");
249 }
250 } else if group_id == radio_group2.id() {
251 // 支付方式组
252 if selected_id == radio2_1.id() {
253 payment_index = 0;
254 println!("💚 选择: 微信支付");
255 } else if selected_id == radio2_2.id() {
256 payment_index = 1;
257 println!("💙 选择: 支付宝");
258 } else if selected_id == radio2_3.id() {
259 payment_index = 2;
260 println!("💰 选择: 货到付款");
261 }
262 } else if group_id == radio_group3.id() {
263 // 发票类型组
264 if selected_id == radio3_1.id() {
265 invoice_index = 0;
266 println!("❌ 选择: 不需要发票");
267 } else if selected_id == radio3_2.id() {
268 invoice_index = 1;
269 println!("📧 选择: 电子发票");
270 } else if selected_id == radio3_3.id() {
271 invoice_index = 2;
272 println!("📄 选择: 纸质发票 (+¥5)");
273 }
274 }
275
276 update_display(&mut activity, &status, &price,
277 delivery_index, payment_index, invoice_index)?;
278 },
279 "click" => {
280 let clicked_id = event_value["id"].as_i64().unwrap_or(-1);
281
282 if clicked_id == confirm_btn.id() {
283 println!("\n✅ 订单确认:");
284 println!(" 配送方式: {} (¥{})",
285 delivery_options[delivery_index],
286 delivery_prices[delivery_index]);
287 println!(" 支付方式: {}", payment_options[payment_index]);
288 println!(" 发票类型: {} (¥{})",
289 invoice_options[invoice_index],
290 invoice_prices[invoice_index]);
291 println!(" 总计: ¥{}",
292 delivery_prices[delivery_index] + invoice_prices[invoice_index]);
293
294 // 显示确认消息
295 status.set_text(&mut activity, "✅ 订单已确认!")?;
296 status.set_text_color(&mut activity, 0xFF4CAF50u32 as i32)?;
297 }
298 },
299 _ => {}
300 }
301 }
302}Sourcepub fn view(&self) -> &View
pub fn view(&self) -> &View
Get the underlying View
Examples found in repository?
examples/radio_demo_v2.rs (line 42)
8fn main() -> Result<()> {
9 println!("=== RadioGroup + RadioButton 单选演示 (新库版本) ===\n");
10
11 // 创建 Activity(对话框模式)
12 let mut activity = Activity::new(true)?;
13 println!("✓ 连接建立\n");
14
15 // 创建主布局
16 let layout = activity.create_linear_layout(None)?;
17
18 // 创建标题
19 let title = activity.create_text_view("📦 选择配送方式", Some(layout.id()))?;
20 title.set_text_size(&mut activity, 26)?;
21 title.view().set_margin(&mut activity, 10)?;
22 title.view().set_height_wrap_content(&mut activity)?;
23 title.view().set_linear_layout_params(&mut activity, 0, None)?;
24
25 // ========== 第一个 RadioGroup - 配送方式 ==========
26 let section1 = activity.create_text_view("配送方式:", Some(layout.id()))?;
27 section1.set_text_size(&mut activity, 18)?;
28 section1.view().set_margin(&mut activity, 8)?;
29 section1.view().set_height_wrap_content(&mut activity)?;
30 section1.view().set_linear_layout_params(&mut activity, 0, None)?;
31
32 let radio_group1 = activity.create_radio_group(Some(layout.id()))?;
33 radio_group1.view().set_height_wrap_content(&mut activity)?;
34 radio_group1.view().set_linear_layout_params(&mut activity, 0, None)?;
35
36 // RadioButton 1.1 - 标准配送(默认选中)
37 let radio1_1 = activity.create_radio_button_checked(
38 "📮 标准配送 (免费, 3-5天)",
39 Some(radio_group1.id()),
40 true
41 )?;
42 radio1_1.view().set_height_wrap_content(&mut activity)?;
43 radio1_1.view().set_linear_layout_params(&mut activity, 0, None)?;
44
45 // RadioButton 1.2 - 快速配送
46 let radio1_2 = activity.create_radio_button_checked(
47 "🚚 快速配送 (¥15, 1-2天)",
48 Some(radio_group1.id()),
49 false
50 )?;
51 radio1_2.view().set_height_wrap_content(&mut activity)?;
52 radio1_2.view().set_linear_layout_params(&mut activity, 0, None)?;
53
54 // RadioButton 1.3 - 当日达
55 let radio1_3 = activity.create_radio_button_checked(
56 "⚡ 当日达 (¥30, 当天送达)",
57 Some(radio_group1.id()),
58 false
59 )?;
60 radio1_3.view().set_height_wrap_content(&mut activity)?;
61 radio1_3.view().set_linear_layout_params(&mut activity, 0, None)?;
62
63 // 分隔线
64 let divider1 = activity.create_text_view("━━━━━━━━━━━━━━━━━━━━", Some(layout.id()))?;
65 divider1.view().set_height_wrap_content(&mut activity)?;
66 divider1.view().set_linear_layout_params(&mut activity, 0, None)?;
67
68 // ========== 第二个 RadioGroup - 支付方式 ==========
69 let section2 = activity.create_text_view("支付方式:", Some(layout.id()))?;
70 section2.set_text_size(&mut activity, 18)?;
71 section2.view().set_margin(&mut activity, 8)?;
72 section2.view().set_height_wrap_content(&mut activity)?;
73 section2.view().set_linear_layout_params(&mut activity, 0, None)?;
74
75 let radio_group2 = activity.create_radio_group(Some(layout.id()))?;
76 radio_group2.view().set_height_wrap_content(&mut activity)?;
77 radio_group2.view().set_linear_layout_params(&mut activity, 0, None)?;
78
79 // RadioButton 2.1 - 微信支付(默认选中)
80 let radio2_1 = activity.create_radio_button_checked(
81 "💚 微信支付",
82 Some(radio_group2.id()),
83 true
84 )?;
85 radio2_1.view().set_height_wrap_content(&mut activity)?;
86 radio2_1.view().set_linear_layout_params(&mut activity, 0, None)?;
87
88 // RadioButton 2.2 - 支付宝
89 let radio2_2 = activity.create_radio_button_checked(
90 "💙 支付宝",
91 Some(radio_group2.id()),
92 false
93 )?;
94 radio2_2.view().set_height_wrap_content(&mut activity)?;
95 radio2_2.view().set_linear_layout_params(&mut activity, 0, None)?;
96
97 // RadioButton 2.3 - 货到付款
98 let radio2_3 = activity.create_radio_button_checked(
99 "💰 货到付款",
100 Some(radio_group2.id()),
101 false
102 )?;
103 radio2_3.view().set_height_wrap_content(&mut activity)?;
104 radio2_3.view().set_linear_layout_params(&mut activity, 0, None)?;
105
106 // 分隔线
107 let divider2 = activity.create_text_view("━━━━━━━━━━━━━━━━━━━━", Some(layout.id()))?;
108 divider2.view().set_height_wrap_content(&mut activity)?;
109 divider2.view().set_linear_layout_params(&mut activity, 0, None)?;
110
111 // ========== 第三个 RadioGroup - 发票类型 ==========
112 let section3 = activity.create_text_view("发票类型:", Some(layout.id()))?;
113 section3.set_text_size(&mut activity, 18)?;
114 section3.view().set_margin(&mut activity, 8)?;
115 section3.view().set_height_wrap_content(&mut activity)?;
116 section3.view().set_linear_layout_params(&mut activity, 0, None)?;
117
118 let radio_group3 = activity.create_radio_group(Some(layout.id()))?;
119 radio_group3.view().set_height_wrap_content(&mut activity)?;
120 radio_group3.view().set_linear_layout_params(&mut activity, 0, None)?;
121
122 // RadioButton 3.1 - 不需要发票(默认选中)
123 let radio3_1 = activity.create_radio_button_checked(
124 "❌ 不需要发票",
125 Some(radio_group3.id()),
126 true
127 )?;
128 radio3_1.view().set_height_wrap_content(&mut activity)?;
129 radio3_1.view().set_linear_layout_params(&mut activity, 0, None)?;
130
131 // RadioButton 3.2 - 电子发票
132 let radio3_2 = activity.create_radio_button_checked(
133 "📧 电子发票",
134 Some(radio_group3.id()),
135 false
136 )?;
137 radio3_2.view().set_height_wrap_content(&mut activity)?;
138 radio3_2.view().set_linear_layout_params(&mut activity, 0, None)?;
139
140 // RadioButton 3.3 - 纸质发票
141 let radio3_3 = activity.create_radio_button_checked(
142 "📄 纸质发票 (+¥5)",
143 Some(radio_group3.id()),
144 false
145 )?;
146 radio3_3.view().set_height_wrap_content(&mut activity)?;
147 radio3_3.view().set_linear_layout_params(&mut activity, 0, None)?;
148
149 // 分隔线
150 let divider3 = activity.create_text_view("━━━━━━━━━━━━━━━━━━━━", Some(layout.id()))?;
151 divider3.view().set_margin(&mut activity, 8)?;
152 divider3.view().set_height_wrap_content(&mut activity)?;
153 divider3.view().set_linear_layout_params(&mut activity, 0, None)?;
154
155 // 状态显示
156 let status = activity.create_text_view(
157 "当前选择:\n配送: 标准配送\n支付: 微信支付\n发票: 不需要发票",
158 Some(layout.id())
159 )?;
160 status.view().set_margin(&mut activity, 10)?;
161 status.view().set_height_wrap_content(&mut activity)?;
162 status.view().set_linear_layout_params(&mut activity, 0, None)?;
163 status.set_text_color(&mut activity, 0xFF2196F3u32 as i32)?;
164
165 // 总价显示
166 let price = activity.create_text_view("总计: ¥0", Some(layout.id()))?;
167 price.set_text_size(&mut activity, 22)?;
168 price.view().set_margin(&mut activity, 10)?;
169 price.view().set_height_wrap_content(&mut activity)?;
170 price.view().set_linear_layout_params(&mut activity, 0, None)?;
171 price.set_text_color(&mut activity, 0xFFFF5722u32 as i32)?;
172
173 // 确认按钮
174 let confirm_btn = activity.create_button("✅ 确认订单", Some(layout.id()))?;
175 confirm_btn.view().set_margin(&mut activity, 10)?;
176 confirm_btn.view().set_height_wrap_content(&mut activity)?;
177 confirm_btn.view().set_linear_layout_params(&mut activity, 0, None)?;
178
179 println!("✓ 界面创建完成\n");
180 println!("━━━━━━━━━━━━━━━━━━━━━━");
181 println!("提示:");
182 println!(" • 每组只能选择一个选项");
183 println!(" • 选择会自动更新总价");
184 println!(" • 点击 '确认订单' 提交");
185 println!("━━━━━━━━━━━━━━━━━━━━━━\n");
186
187 // 状态跟踪
188 let delivery_options = ["标准配送", "快速配送", "当日达"];
189 let delivery_prices = [0, 15, 30];
190 let mut delivery_index = 0;
191
192 let payment_options = ["微信支付", "支付宝", "货到付款"];
193 let mut payment_index = 0;
194
195 let invoice_options = ["不需要发票", "电子发票", "纸质发票"];
196 let invoice_prices = [0, 0, 5];
197 let mut invoice_index = 0;
198
199 // 更新显示的辅助函数
200 let update_display = |activity: &mut Activity,
201 status: &TextView,
202 price: &TextView,
203 del_idx: usize,
204 pay_idx: usize,
205 inv_idx: usize| -> Result<()> {
206 let status_text = format!(
207 "当前选择:\n配送: {}\n支付: {}\n发票: {}",
208 delivery_options[del_idx],
209 payment_options[pay_idx],
210 invoice_options[inv_idx]
211 );
212 status.set_text(activity, &status_text)?;
213
214 let total = delivery_prices[del_idx] + invoice_prices[inv_idx];
215 let price_text = format!("总计: ¥{}", total);
216 price.set_text(activity, &price_text)?;
217
218 Ok(())
219 };
220
221 // 事件循环
222 loop {
223 let event = read_message(activity.event_stream())?;
224 let event_type = event["type"].as_str().unwrap_or("");
225 let event_value = &event["value"];
226
227 match event_type {
228 "destroy" => {
229 // Activity 已被系统销毁,直接退出即可
230 // 不要调用 activity.finish(),因为 Activity 已经不存在了
231 println!("\n✓ Activity 已关闭");
232 return Ok(());
233 },
234 "selected" => {
235 let group_id = event_value["id"].as_i64().unwrap_or(-1);
236 let selected_id = event_value["selected"].as_i64().unwrap_or(-1);
237
238 if group_id == radio_group1.id() {
239 // 配送方式组
240 if selected_id == radio1_1.id() {
241 delivery_index = 0;
242 println!("📮 选择: 标准配送");
243 } else if selected_id == radio1_2.id() {
244 delivery_index = 1;
245 println!("🚚 选择: 快速配送 (+¥15)");
246 } else if selected_id == radio1_3.id() {
247 delivery_index = 2;
248 println!("⚡ 选择: 当日达 (+¥30)");
249 }
250 } else if group_id == radio_group2.id() {
251 // 支付方式组
252 if selected_id == radio2_1.id() {
253 payment_index = 0;
254 println!("💚 选择: 微信支付");
255 } else if selected_id == radio2_2.id() {
256 payment_index = 1;
257 println!("💙 选择: 支付宝");
258 } else if selected_id == radio2_3.id() {
259 payment_index = 2;
260 println!("💰 选择: 货到付款");
261 }
262 } else if group_id == radio_group3.id() {
263 // 发票类型组
264 if selected_id == radio3_1.id() {
265 invoice_index = 0;
266 println!("❌ 选择: 不需要发票");
267 } else if selected_id == radio3_2.id() {
268 invoice_index = 1;
269 println!("📧 选择: 电子发票");
270 } else if selected_id == radio3_3.id() {
271 invoice_index = 2;
272 println!("📄 选择: 纸质发票 (+¥5)");
273 }
274 }
275
276 update_display(&mut activity, &status, &price,
277 delivery_index, payment_index, invoice_index)?;
278 },
279 "click" => {
280 let clicked_id = event_value["id"].as_i64().unwrap_or(-1);
281
282 if clicked_id == confirm_btn.id() {
283 println!("\n✅ 订单确认:");
284 println!(" 配送方式: {} (¥{})",
285 delivery_options[delivery_index],
286 delivery_prices[delivery_index]);
287 println!(" 支付方式: {}", payment_options[payment_index]);
288 println!(" 发票类型: {} (¥{})",
289 invoice_options[invoice_index],
290 invoice_prices[invoice_index]);
291 println!(" 总计: ¥{}",
292 delivery_prices[delivery_index] + invoice_prices[invoice_index]);
293
294 // 显示确认消息
295 status.set_text(&mut activity, "✅ 订单已确认!")?;
296 status.set_text_color(&mut activity, 0xFF4CAF50u32 as i32)?;
297 }
298 },
299 _ => {}
300 }
301 }
302}Auto Trait Implementations§
impl Freeze for RadioButton
impl RefUnwindSafe for RadioButton
impl Send for RadioButton
impl Sync for RadioButton
impl Unpin for RadioButton
impl UnwindSafe for RadioButton
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more