我有一个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”。
如果你需要告诉我的话,我会随时随地提供帮助。
答案 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
不是一种神奇的方法"寻找你的观点。它实际上是View
或Activity
在你的枚举课中,你不应该使用那种东西。只需检查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