1

我是第一次编写 Android 程序,但遇到了一些困难。这个想法是制作一个猜谜游戏应用程序,用户在他/她的脑海中输入一个数字,然后应用程序尝试猜测它。用户会给应用程序提供更高和更低的提示。由于某种原因,我按下开始按钮后应用程序崩溃。因此,我知道该onClick方法存在错误,但是由于它在我按下开始按钮后立即关闭,因此我无法使用类似 a 的东西println进行调试。

所以实际上我有两个问题:

  1. 我的推理在哪里失败?(或告诉我如何找出我的错误)
  2. 我怎样才能调试这样的事情?

开始、升高和降低都是程序中的按钮。

@Override
    public void onClick(View arg0) {
        int min = 0;
        int max = 100;
        Random random = new Random(100);
        int answer = 0;

        if (arg0 == start) {
            answer = random.nextInt(100);
            buttonTextView.setText(answer);
        }
        else if (arg0 == higher){
            min = answer;
            answer = random.nextInt((max - min) + min);
            buttonTextView.setText(answer);
        }
        else if (arg0 == lower) {
            max = answer;
            answer = random.nextInt((max-1) - min);
            buttonTextView.setText(answer);
        }

    }
4

1 回答 1

3
  1. 我的推理在哪里失败?

您使用了错误的setText()方法。在 TextView Docsint中,String您会看到有一个需要strings.xml一个resource id. 所以你setText()正在寻找一个resourceid你的answer变量是什么的。你会想用类似的String东西把它转换成

buttonTextView.setText(String.valueof(answer));

或几种不同方式之一。

  1. 我怎样才能调试这样的事情?

当您的应用程序崩溃时,您的 logcat 中会出现异常。这个答案可以帮助你阅读你的 logcat。要在 Eclipse 中打开您的 logcat 窗口,如果还没有,您可以这样做

窗口 --> 显示视图 --> 其他 --> Android --> LogCat

一些旁注

你应该把你params喜欢的onClick()东西改成有意义的东西,所以我会改变

public void onClick(View arg0)

类似于

public void onClick(View v)  // v for view, could also be view, btn
                       //  whatever makes sense to you and others who may read it

id您还应该比较View单击的而不是View本身。因此,您可以将其与以下内容进行比较(假设您更改arg0v

if (v.getId() == R.id.start)  // Assuming start is the id in your xml of your Button
                                 // this will also allow you to use a switch statement

onClick()您在( min, max, 和)中的变量answer应该在外部初始化,onClick()否则它们将在每次点击时重置为默认值,我很确定您不想要(感谢 323go 指出这一点)。

于 2013-10-11T14:13:31.903 回答