2013-02-13 88 views
1

我的應用程序有一個微調器,其中有四個條目。我需要能夠檢索哪些標籤被選中,而不是實際的標籤本身。下面是我這樣做的部分代碼:Spinner的getSelectedItemPosition()方法返回意外的結果

// 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,無論哪個Spinner的項目我已經選擇。任何人都可以幫我弄清楚爲什麼?謝謝!

回答

5

將一個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; 
} 

中的switch-case條件省略break可能產生錯誤的行爲。如果選擇了case(沒有break),則流程仍會繼續,並且始終執行default條件。

+0

我已經看到了一些成功使用switch-case語句的break和一些沒有。你能解釋爲什麼嗎? – Argus9 2013-02-13 00:40:12

+0

更新了答案 – Geros 2013-02-13 00:47:54

+0

很好的答案,謝謝! – Argus9 2013-02-13 00:51:26