RadioButton

Struct RadioButton 

Source
pub struct RadioButton { /* private fields */ }
Expand description

A RadioButton in a group

Implementations§

Source§

impl RadioButton

Source

pub fn new( activity: &mut Activity, text: &str, parent: Option<i64>, ) -> Result<Self>

Create a new RadioButton (unchecked by default)

Source

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

Source

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}
Source

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}
Source

pub fn set_text(&self, activity: &mut Activity, text: &str) -> Result<()>

Set the radio button text

Source

pub fn set_checked(&self, activity: &mut Activity, checked: bool) -> Result<()>

Set checked state

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V