Моего перечислимого объявления:Android/Java: методы Enum разбивая приложение
public enum Note { A, A_SHARP, B, C, C_SHARP, D, D_SHARP,
E, F, F_SHARP, G, G_SHARP;
public String toString(Note note) {
if (note == Note.A)
return "A";
else if (note == Note.A_SHARP)
return "A#";
else if (note == Note.B)
return "B";
else if (note == Note.C)
return "C";
else if (note == Note.C_SHARP)
return "C#";
else if (note == Note.D)
return "D";
else if (note == Note.D_SHARP)
return "D#";
else if (note == Note.E)
return "E";
else if (note == Note.F)
return "F";
else if (note == Note.F_SHARP)
return "F#";
else if (note == Note.G)
return "G";
else if (note == Note.G_SHARP)
return "G#";
else
return "";
}
public Note getNext() {
int index = ordinal();
index++;
if (index > values().length)
return values()[0];
else
return values()[index];
}
}
Всякий раз, когда я называю любого из этих двух методов, мое приложение падает. Здесь я назову их:
public void ChangeSound(View v) {
note = note.getNext();
tvSounds.setText(note.toString(note));
}
ChangeSound() - это метод onClick для кнопки. Если я удаляю обе строки в ChangeSound(), код работает так, как должен, но если одна из двух строк находится там, приложение вылетает при нажатии кнопки. Любые идеи почему? Заранее спасибо!!
EDIT ** нота является переменной типа Примечание
Спасибо всем! Он возвращал нуль (см. Ответы Джейсона С (мой комментарий)). Все это было полезно для меня!
Что вы подразумеваете под «сбоями»? Есть ли конкретное исключение? –
Один из нижеприведенных ответов ниже - это не ответ, но это хорошее предложение; используйте переключатель для toString. – DwB
Поскольку вы говорите, что note.toString (примечание) также вызывает проблему, более вероятно, что «примечание» равно null. Убедитесь, что это не так, и подумайте о том, как статизировать Note.toString (Note), чтобы он мог обрабатывать нули. См. Мой ответ ниже. –