如何使用用户在EditText中输入的值设置枚举?

时间:2017-08-03 12:31:18

标签: android if-statement enums android-edittext

我有一个editText,用户输入0到10之间的数字。根据输入的数字,将设置枚举(知识)。
到目前为止,这是我的代码:

public int fromUserInput() {
    TextView eWissen = (TextView) findViewById(R.id.editText_eingabeWissentsstand);
    eWissen.getText().toString() == Zahl;
    return Zahl;
}

private enum Wissenstand
{
    BEGINNER, FORTGESCHRITTENER, PRO, GRANDMASTER;

    static Wissenstand fromUserInput(final int input)
    {
        if (input >= 10) {
            return GRANDMASTER;
        } else if (input >= 7) {
            return PRO;
        } else if (input >= 4) {
            return FORTGESCHRITTENER;
        } else if (input >= 0) {
            return BEGINNER;
        } else {
            TextView uWissen = (TextView) findViewById(R.id.textView_Wissen_Titel);
            TextView pWarung = (TextView) findViewById(R.id.textView_Wissen);


        uWissen.setText("Fehler gefunden!");
        uWissen.getResources().getColor(android.R.color.holo_red_dark);
        pWarung.setText("Gib eine Zahl von 0 bis 10 ein!\n0,5-er Schritte sind nicht erlaubt!\nWeitere Informationen kannst du der Legende entnehmen!");
        pWarung.getResources().getColor(android.R.color.holo_red_light);
        }
        return null;
    }
}

此外,出于某种原因,我不能在“来自UserInput(Final int input){...}”方法的“静态Wissenstand”中使用“findViewById”。
如果你需要告诉我的话,我会随时随地提供帮助。

2 个答案:

答案 0 :(得分:0)

else条件不应该在该类中。

你想要这样的东西:

public Wissenstand Bestätigung(View v) {
    TextView uWissen = (TextView) findViewById(R.id.textView_Wissen_Titel);
    TextView pWarung = (TextView) findViewById(R.id.textView_Wissen);
    TextView eWissen = (TextView) findViewById(R.id.editText_eingabeWissentsstand);

    knowledge = Wissenstand.fromUserInput( Integer.parseInt( eWissen.getText().toString() );

    if(knowledge == null){
         uWissen.setText("Fehler gefunden!");
         uWissen.getResources().getColor(android.R.color.holo_red_dark);
         pWarung.setText("Gib eine Zahl von 0 bis 10 ein!\n0,5-er Schritte sind nicht erlaubt!\nWeitere Informationen kannst du der Legende entnehmen!");
         pWarung.getResources().getColor(android.R.color.holo_red_light);
    }
}

答案 1 :(得分:0)

findViewById不是一种神奇的方法"寻找你的观点。它实际上是ViewActivity

的方法

在你的枚举课中,你不应该使用那种东西。只需检查int值,如果超出范围,则抛出IllegalArgumentException

static Wissenstand fromUserInput(final int input)
    {
        if (input >= 10) {
            return GRANDMASTER;
        } else if (input >= 7) {
            return PRO;
        } else if (input >= 4) {
            return FORTGESCHRITTENER;
        } else if (input >= 0) {
            return BEGINNER;
        } else {
            throw new IllegalArgumentException("Invalid value");    
        }
    }

调用fromUserInput时,您应该添加相应的try-catch