2012-10-30 100 views
0

我想做一個簡單的表單活動,以瞭解如何使用Eclipse提供的各種組件。直到我到達單選按鈕時,我都做得很好。獲取單選按鈕值Android

該應用程序允許用戶填寫整個表格,然後單擊發送按鈕。當單擊發送按鈕時,我創建一個新的意圖,將所有表單數據傳入意圖,並啓動一個新的活動,以充當一種確認/摘要頁面。

我該如何去檢索用戶點擊了哪個單選按鈕?我總共有五個。 下面是我的onCreate方法的代碼。

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.feedback_scroll); 

    //References to XML 
    name = (EditText)findViewById(R.id.nameEntryBox); 
    county = (Spinner)findViewById(R.id.countySpinner); 

    //Set array adapter 
    county.setAdapter(fillCountySpinner()); 
    submitBtn = (Button)findViewById(R.id.submitFormBtn); 

    atmo1 = (RadioButton)findViewById(R.id.arad1); 
    atmo2 = (RadioButton)findViewById(R.id.arad2); 
    atmo3 = (RadioButton)findViewById(R.id.arad3); 
    atmo4 = (RadioButton)findViewById(R.id.arad4); 
    atmo5 = (RadioButton)findViewById(R.id.arad5); 

    ser1 = (RadioButton)findViewById(R.id.srad1); 
    ser2 = (RadioButton)findViewById(R.id.srad2); 
    ser3 = (RadioButton)findViewById(R.id.srad3); 
    ser4 = (RadioButton)findViewById(R.id.srad4); 
    ser5 = (RadioButton)findViewById(R.id.srad5); 

    rating = (RatingBar)findViewById(R.id.ratingBar1); 

    //Add a listener to the submit button - Anonymous inner class 
    submitBtn.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // Create a new Intent 
      Intent i = new Intent(v.getContext(), FeedbackResults.class); 

      choice = (String)county.getSelectedItem(); 
      //Add extra parameters 

      //Name 
      i.putExtra("name", name.getText()); 
      //County 
      i.putExtra("county", choice); 
      //Dob 
      //Atmosphere 
      i.putExtra("atmosphere", atmos); 
      //Service 
      i.putExtra("service", serv); 
      //Rating 
      i.putExtra("rating", rating.getRating()); 

      //Start new Activity that will display a review of the customers feedback 
      startActivity(i); 

      //Toast message 
      Toast.makeText(v.getContext(), "Thank you for your feedback!", Toast.LENGTH_SHORT).show(); 

     } 
    }); 
} 

我在看這個網站上關於我的問題的另一個話題。他們說要使用switch語句。我理解它的邏輯,並寫在方法來做到這一點,但我不知道如何將視圖變量傳遞給它..什麼是這個視圖變量與?這是我寫的方法。

public void onRadioButtonClicked1(View v){ 

    switch(v.getId()){ 
    case R.id.arad1: 
     atmos = "1"; 
     break; 
    case R.id.arad2: 
     atmos = "2"; 
     break; 
    case R.id.arad3: 
     atmos = "3"; 
     break; 
    case R.id.arad4: 
     atmos = "4"; 
     break; 
    case R.id.arad5: 
     atmos = "5"; 
     break; 
    } 

} 

任何反饋非常感謝!

回答

3

每組單選按鈕都應該在一個組中,我假設你已經在你的XML文件中做了這個。

假設,那麼你做得到檢查單選按鈕的ID:

int id = ((RadioGroup)findViewById(R.id.radio_group)).getCheckedRadioButtonId(); 

你可以做的是,在任何地方Activity,或者如果您使用的是Fragment,那麼你只需要把getView()它:

int id = ((RadioGroup)getView().findViewById(R.id.radio_group)).getCheckedRadioButtonId(); 

所以我會改變你的onClick

public void onClick(View v) { 
    // Create a new Intent 
    Intent i = new Intent(v.getContext(), FeedbackResults.class); 

    choice = (String)county.getSelectedItem(); 
    int id = ((RadioGroup)findViewById(R.id.radio_group)).getCheckedRadioButtonId(); 
    atmos = getAtmos(id); 
    ... 
} 

private int getAtmos(int id) { 
    switch(id) { 
     case R.id.arad1: 
      atmos = "1"; 
      break; 
     case R.id.arad2: 
      atmos = "2"; 
      break; 
     case R.id.arad3: 
      atmos = "3"; 
      break; 
     case R.id.arad4: 
      atmos = "4"; 
     break; 
     case R.id.arad5: 
      atmos = "5"; 
      break; 
    } 

    return atmos; 
} 
+0

我其實並沒有把我的單選按鈕放在一個組裏!但是這樣做很有意義!我會嘗試你現在的建議。 – Javacadabra

+0

謝謝,這工作。 – Javacadabra