mardi 8 août 2017

Why does my app crashes over and over again?

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:

http://ift.tt/2ulugxp

Aucun commentaire:

Enregistrer un commentaire