Sto usando enumerazione con il caso di interruttore, ma sto ottenendo il seguente errore:non è una costante in Enum
NEWS FEED is not a constant in FragmentName
Questa è la mia stringa enum costante,
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;
}
}
Quando chiamo
changeTitle("NEWS FEED");
crea un'eccezione nella funzione changeTitle anche il valore passato è lo stesso, quindi qualsiasi aiuto sarebbe apprezzato come ho Ho provato ogni mio sforzo per risolvere questo.
La chiamata 'valueOf' si aspetta che tu passi un valore come' FRAGMENT_NEWSFEED', non il valore stringa 'NEWS FEED'. – sstan
Cosa ti aspetti che succeda quando chiami 'Enums_String.FragmentName.valueOf (title)' con 'title' come' "NEWS FEED" 'e perché pensi che dovrebbe funzionare in questo modo (quale parte della documentazione ti suggerisce che questo dovrebbe funziona come pensi che lo faccia)? – Pshemo
grazie sstan, ma voglio "NEWS FEED" da inviare al metodo changeTitle (String) e corrispondente, deve funzionare – TheGreat004