Spinner игнорирует условные выражения - PullRequest
0 голосов
/ 30 июня 2011

Итак, я получил мой счетчик с записями из StringArray.

String[] spinnerEntries = {
                getResources().getString(R.string.oldPoint),
                getResources().getString(R.string.newPoint),
                getResources().getString(R.string.gpsLocation) };

Spinner spinner = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_spinner_item, spinnerEntries);

Я хочу установить searchPoint в зависимости от выбора счетчика, но он полностью игнорирует все случаи, кроме первого (oldPoint),Что я делаю неправильно?Где я слишком устал или слишком глуп, но я просто не вижу проблемы.

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    String spinnerItem = (String) parent.getItemAtPosition(pos);
    if (spinnerItem.equals(getString(R.string.oldPoint))) {
        searchPoint = R.string.oldPoint;
    } else if (spinnerItem.equals(R.string.newPoint)) {
        searchPoint = R.string.newPoint;
    } else if (spinnerItem.equals(R.string.gpsLocation)) {
        searchPoint = R.string.gpsLocation;
    }
}

1 Ответ

1 голос
/ 30 июня 2011

В первом условии вы правильно вызываете getString () для имени константы.Однако, во вторых двух других блоках вы не.

// Correct
if (spinnerItem.equals(getString(R.string.oldPoint))) {
    searchPoint = R.string.oldPoint;

// Need to call getString() on R.string.newPoint
} else if (spinnerItem.equals(R.string.newPoint)) {
    searchPoint = R.string.newPoint;

// Need to call getString() on R.string.gpsLocation
} else if (spinnerItem.equals(R.string.gpsLocation)) {
    searchPoint = R.string.gpsLocation;
}
...