Я пытаюсь просмотреть определенные значки на основе выбранного переключателя с помощью оператора 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);
}
попробовать добавить 'подрезать()' на вашем Радиотекст 'ToString()' – Pztar
@Pztar просто попробовал, но, к сожалению, ничего не изменилось, он все еще возвращает другие :( – Axelle