I'd like that my enum will set depending on which number the user enter in a EditText (XML) [Only Numbers between 0 and 10 allowed)].
My problem is, that if I enter a char, a char sequenz, a number over 10 or a number under 0 my enum will be the same if I enter 0. I belive it will be an easy fix and/or a dumb mistake ^^"
@SuppressLint("SetTextI18n")
public void Checking(View X) {
TextView hKnowledge = (TextView) findViewById(R.id.headerKnowledge);
TextView tKnowledge = (TextView) findViewById(R.id.textKnowledge);
TextView eKnowledge = (TextView) findViewById(R.id.enterKnowledge);
try{
int inputNumber = Integer.parseInt(eKnowledge.getText().toString());
_knowledge = KnowledgeLevel.fromUserInput(inputNumber);
} catch(NumberFormatException e){
hKnowledge.setText("Fehler gefunden!");
hKnowledge.getResources().getColor(android.R.color.holo_red_dark);
tKnowledge.setText("Gib eine Ganzzahl von 0 bis 10 ein!\n\nWeitere Informationen kannst du der Legende entnehmen!");
tKnowledge.getResources().getColor(android.R.color.holo_red_light);
}
Test();
}
public void Test() {
setContentView(R.layout.test);
TextView test = (TextView) findViewById(R.id.textView);
switch(_knowledge) {
case NONE:
test.setText("ENNUM = NOOB");
break;
case BEGINNER:
test.setText("ENUM = BEGINNER");
break;
case ADVANCED:
test.setText("ENUM = ADV");
break;
case PRO:
test.setText("ENUM = PRO");
break;
case GRANDMASTER:
test.setText("ENUM = GM");
break;
}
}
private enum KnowledgeLevel {
NONE, BEGINNER, ADVANCED, PRO, GRANDMASTER;
static KnowledgeLevel fromUserInput(final int input)
{
if (input >= 10) {
return GRANDMASTER;
}
else if (input >= 7) {
return PRO;
}
else if (input >= 4) {
return ADVANCED;
}
else if (input >= 0) {
return BEGINNER;
}
return NONE;
}
}
Aucun commentaire:
Enregistrer un commentaire