У моего приложения есть счетчик с четырьмя входами в него. Мне нужно иметь возможность получить, какая из этих меток выбрана, а не сами метки. Ниже мой частичный код для этого:Метод getSelectedItemPosition() Spinner возвращает неожиданные результаты
// 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);
В более поздний метод:
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
}
Этот метод всегда кажется, не возвращать 42, независимо от того, какой из элементов прядильщика я выбрал. Может ли кто-нибудь помочь мне понять, почему? Спасибо!
Я видел некоторые успешные применения операторов switch-case с перерывами, а некоторые без них. Можете ли вы объяснить, почему? – Argus9
Обновлен ответ – Geros
Отличный ответ, спасибо! – Argus9