当我尝试使用整数值填充TextView时,为什么我的应用程序崩溃了?

时间:2015-03-03 20:20:47

标签: java android random

我正在尝试开发一个应用程序,将用户的输入数字与计算机中随机生成的数字进行比较,具体取决于输入的数字是否高于,低于或等于生成的数字,有不同的消息输出。但是每当我尝试运行它时,应用程序崩溃(使用this stacktrace)。这是我的方法代码:

如果有人能够认识到它崩溃的原因那就太棒了 - 对Android来说很新,所以很难看到错误。

public void guessingGame (View v)
{
    EditText guess = (EditText) findViewById(R.id.ETguess);
    TextView guessError = (TextView) findViewById(R.id.guessError);
    TextView compGuess = (TextView) findViewById(R.id.tvCompGuess);

    int guessValue = Integer.parseInt(guess.getText().toString());

    if (guessValue > 20)
    {
        guessError.setVisibility(View.VISIBLE);
        guess.getText().clear();
    }
    else if (guessValue < 1)
    {
        guessError.setVisibility(View.VISIBLE);
        guess.getText().clear();
    }
    else 
    {
        int min = 1;
        int max = 20;

        Random r = new Random();
        int i = r.nextInt(max - min + 1) + min;

        int computerNumber = i;
        compGuess.setText(i);

        if (computerNumber > guessValue)
        {
            guessError.setText("Too low!");
        }
        else if (computerNumber < guessValue)
        {
            guessError.setText("Too high!");
        }
        else if (computerNumber == guessValue)
        {
            guessError.setText("Good Guess!");
        }
    }

}

1 个答案:

答案 0 :(得分:1)

    compGuess.setText(i);

您不能使用TextView.setText(int)将文本设置为任意整数。整数必须是字符串的资源ID(通常在res / values / strings.xml中定义,或从您的某个上游依赖项导入)。

如果要将TextView的内容设置为表示整数的字符串,则应该像这样执行

    compGuess.setText(Integer.toString(i));