我的应用程序有一个微调器,里面有四个条目.我需要能够检索选择了哪些标签,而不是实际标签本身.以下是我执行此操作的部分代码:
// Set up the activity's Spinner
spinnerAdapter = ArrayAdapter.createFromResource(this, R.array.pay_periods, android.R.layout.simple_spinner_item);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner s = (Spinner) findViewById(R.id.main_spinner_payperiod);
s.setAdapter(spinnerAdapter);
Run Code Online (Sandbox Code Playgroud)
在以后的方法中:
switch(payPeriod.getSelectedItemPosition()){
case(0): // Daily
dailyAllowance = Float.parseFloat(payment.getText().toString());
case(1): // Weekly
dailyAllowance = (Float.parseFloat(payment.getText().toString())) / 7;
case(2): // Bi-weekly
dailyAllowance = (Float.parseFloat(payment.getText().toString())) / 14;
case(3): // 30 days
dailyAllowance = (Float.parseFloat(payment.getText().toString())) / 30;
case(Spinner.INVALID_POSITION):
dailyAllowance = 0;
default:
dailyAllowance = 42; // Junk value, for debugging purposes
}
Run Code Online (Sandbox Code Playgroud)
无论我选择哪个Spinner项目,这个方法似乎总是返回42.任何人都可以帮我找出原因吗?谢谢!
把break你的switch-case条件
switch(payPeriod.getSelectedItemPosition()) {
case(0): // Daily
dailyAllowance = Float.parseFloat(payment.getText().toString());
break;
case(1): // Weekly
dailyAllowance = (Float.parseFloat(payment.getText().toString())) / 7;
break;
case(2): // Bi-weekly
dailyAllowance = (Float.parseFloat(payment.getText().toString())) / 14;
break;
case(3): // 30 days
dailyAllowance = (Float.parseFloat(payment.getText().toString())) / 30;
break;
case(Spinner.INVALID_POSITION):
dailyAllowance = 0;
break;
default:
dailyAllowance = 42; // Junk value, for debugging purposes
break;
}
Run Code Online (Sandbox Code Playgroud)
break在交换机情况下省略可能会产生错误的行为.如果选择case(不break),则流程仍然继续,并且default始终执行条件.
| 归档时间: |
|
| 查看次数: |
7348 次 |
| 最近记录: |