2017-01-13 3 views
0

Я пытаюсь просмотреть определенные значки на основе выбранного переключателя с помощью оператора if. Я не хотел использовать прослушиватель, так как я все равно нажимаю кнопку отправки.Android: неправильная проверка значения текстового поля радиосвязи

У меня есть 3 кнопки: вечеринка, авария и прочее. При запуске моего кода мое сообщение Log показывает, что я всегда получаю «other» (else clause) в качестве проверенного значения, даже если это не так.

Я пробовал так много разных способов из многих разных потоков в Stack Overflow, но я боюсь, что я могу сделать что-то еще неправильно. Вот код:

private void addMarkerToMap() { 
    AlertDialog.Builder builder = new AlertDialog.Builder(MapsActivity.this); 
    View view = getLayoutInflater().inflate(R.layout.dialoglayout, null); 

    streetname = (EditText) view.findViewById(R.id.streetname_input); 
    title = (EditText) view.findViewById(R.id.title_input); 
    description = (EditText) view.findViewById(R.id.description_input); 
    radioGroup = (RadioGroup) view.findViewById(R.id.radioGroup); 
    final int selectedID = radioGroup.getCheckedRadioButtonId(); 
    radioButton = (RadioButton) view.findViewById(selectedID); 

    Button addButton = (Button) view.findViewById(R.id.add_button); 
    Button cancelButton = (Button) view.findViewById(R.id.cancel_button); 

    builder.setView(view); 
    final AlertDialog dialog = builder.create(); 
    dialog.show(); 

    addButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
       addMarker(streetname, title, description); 
     } 
    }); 

    cancelButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
    }); 
} 

private void addMarker(EditText streetname, EditText title, EditText description) { 
    String streetnameText = streetname.getText().toString(); 
    String titleText = title.getText().toString(); 
    String descriptionText = description.getText().toString(); 
    String radioText = radioButton.getText().toString(); 
    BitmapDescriptor icon; //= BitmapDescriptorFactory.fromResource(R.drawable.standard); //has to have a standard value 
    //Log.d("id", "id" + ID); 
    Log.d("radioText", "text: " + radioText); 

    if(streetnameText.isEmpty() || titleText.isEmpty() || descriptionText.isEmpty()) { 
     Toast.makeText(this, "One of the textboxes is empty. Please fill in all textboxes", Toast.LENGTH_LONG).show(); 
    } else { 
     if(radioText.equals("Accident")){ 
      icon = BitmapDescriptorFactory.fromResource(R.drawable.accident); 
     } 
     else if(radioText.equals("Party")){ 
      icon = BitmapDescriptorFactory.fromResource(R.drawable.party); 
     } 
     else { 
      icon = BitmapDescriptorFactory.fromResource(R.drawable.standard); 
     } 



     MarkerOptions markerOptions = new MarkerOptions().position(latlngGlobal) 
       .title(titleText) 
       .snippet(descriptionText) 
       .icon(icon); 

     //TODO add new marker 
     mMarker = mGoogleMap.addMarker(markerOptions); 

     // TODO Get location for marker, add to database 
    } 
} 

Я также попытался использовать это вместо того, но это тот же результат (дает идентификатор «другой»):

  if(ID == R.id.accident_radio){ 
      icon = BitmapDescriptorFactory.fromResource(R.drawable.accident); 
     } 
     else if(ID == R.id.party_radio){ 
      icon = BitmapDescriptorFactory.fromResource(R.drawable.party); 
     } 
     else { 
      Log.d("id", "id" + ID); 
      icon = BitmapDescriptorFactory.fromResource(R.drawable.standard); 
     } 
+0

попробовать добавить 'подрезать()' на вашем Радиотекст 'ToString()' – Pztar

+0

@Pztar просто попробовал, но, к сожалению, ничего не изменилось, он все еще возвращает другие :( – Axelle

ответ

1

Вы объявили RadioButton в качестве выбранной радио-кнопки группа в это конкретное время, вы не делаете никаких новых деклараций для нее, прежде чем вызывать addMarker (...), чтобы она всегда была одинаковой.

Вместо:

String radioText = radioButton.getText().toString(); 

Попробуйте что-то вроде этого (но сделать это лучше):

String radioText = ((RadioButton) view.findViewById(((RadioGroup) view.findViewById(R.id.radioGroup)).getCheckedRadioButtonId())).getText().toString(); 
+0

Огромное вам спасибо! Не знаю, о чем я думал. – Axelle

+0

Очень приветствуется. =) – Svantro

Смежные вопросы