używam wyliczenie z przypadku przełącznika ale otrzymuję następujący błąd:nie stała w Enum
NEWS FEED is not a constant in FragmentName
To jest mój enum ciąg stały,
public enum FragmentName{
FRAGMENT_NEWSFEED("NEWS FEED"),
FRAGMENT_MESSAGES("MESSAGES"),
FRAGMENT_EVENTS("EVENTS"),
FRAGMENT_WHOISAROUDNME("WHOS AROUND");
private final String text;
private FragmentName(final String text) {
this.text = text;
}
@Override
public String toString() {
return text;
}
}
//This is my function from where i check for corresponding enum constant
public void changeTitle(String title) {
switch (Enums_String.FragmentName.valueOf(title)) {
case FRAGMENT_NEWSFEED:
System.out.println("1");
break;
case FRAGMENT_EVENTS:
System.out.println("2");
break;
case FRAGMENT_MESSAGES:
System.out.println("3");
break;
case FRAGMENT_WHOISAROUDNME:
System.out.println("4");
break;
}
}
Kiedy zadzwonić
changeTitle("NEWS FEED");
tworzy wyjątek w funkcji changeTitle nawet wartość przekazana jest taka sama, więc każda pomoc byłaby doceniana, ponieważ ja ha próbowałem wszelkich starań, aby rozwiązać ten problem.
Wywołanie "valueOf" oczekuje, że przekażesz wartość typu 'FRAGMENT_NEWSFEED', a nie wartość ciągu' NEWS FEED'. – sstan
Czego oczekujesz po wywołaniu 'Enums_String.FragmentName.valueOf (title)' z 'title' jest' "NEWS FEED" 'i dlaczego uważasz, że to powinno działać w ten sposób (która część dokumentacji sugeruje ci, że powinno to pracować tak, jak myślisz, że to robi)? – Pshemo
dziękuję sstan, ale chcę, aby "WIADOMOŚĆ NEWS" wysyłana do metody changeTitle (String) i odpowiednia, musi działać – TheGreat004