I'd like that the user can enter a number between 0 and 10; depending on the number a different enum will be set.
It's almost done, if I enter a number between 0 and 10 it works, if I enter a char or a charsequenze, if works (wanted error message), but if I enter a number which is 11 or higher or -1 or lower my app crashes.
I put a link at the end of my question where you can see my error reports because I don't understand them. I asked a friend of mine but he only said that my TextView(s) are null and that's why my app crashes.
Here's my code:
@SuppressLint("SetTextI18n")
public void checkingInput(View X) {
TextView eKnowledge = (TextView) findViewById(R.id.enterKnowledge);
try{
int inputNumber = Integer.parseInt(eKnowledge.getText().toString());
_knowledge = KnowledgeLevel.fromUserInput(inputNumber);
test();
} catch(NumberFormatException e){
errorKnowledge();
}
}
@SuppressLint("SetTextI18n")
public void test() {
setContentView(R.layout.test);
TextView test = (TextView) findViewById(R.id.textView);
TextView hKnowledge = (TextView) findViewById(R.id.headerKnowledge);
TextView tKnowledge = (TextView) findViewById(R.id.textKnowledge);
switch(_knowledge) {
case NOOB:
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;
case ERROR:
errorKnowledge();
case FAIL:
test.setText("FEHLER!");
}
}
private enum KnowledgeLevel {
FAIL, ERROR, NOOB, BEGINNER, ADVANCED, PRO, GRANDMASTER;
static KnowledgeLevel fromUserInput(final int input)
{
if (input >= 11) {
return ERROR;
}
else if (input == 10) {
return GRANDMASTER;
}
else if (input >= 7) {
return PRO;
}
else if (input >= 4) {
return ADVANCED;
}
else if (input >= 1 ) {
return BEGINNER;
}
else if (input == 0) {
return NOOB;
}
else if (input <= -1) {
return ERROR;
}
return FAIL;
}
}
@SuppressLint("SetTextI18n")
public void errorKnowledge(){
TextView hKnowledge = (TextView) findViewById(R.id.headerKnowledge);
TextView tKnowledge = (TextView) findViewById(R.id.textKnowledge);
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);
}
Here're my error reports:
Aucun commentaire:
Enregistrer un commentaire