Android初学者onClick崩溃

时间:2013-10-11 14:09:36

标签: java android

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

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

  1. 我的推理在哪里失败? (或告诉我如何弄清楚我的错误)
  2. 我该怎样调试这样的东西?
  3. 开始,更高和更低是程序中的所有按钮。

    @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);
            }
    
        }
    

1 个答案:

答案 0 :(得分:3)

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

您使用了错误的setText()方法。 In the TextView Docs您会看到有一个int,这是用于检索您String中的strings.xml资源,因此您可以将resource id传递给setText() 1}}。因此,resource正在寻找id answer的{​​{1}}变量。您需要使用类似

的内容将其转换为String
buttonTextView.setText(String.valueof(answer));

或几种不同的方式之一。

  
      
  1. 我该怎么调试这样的东西?
  2.   

当您的应用崩溃时,您的logcat会出现异常。 This answer可以帮助您阅读您的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本身。因此,您可以将其与以下内容进行比较(假设您已将arg0更改为v

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()minmaxanswer)中的变量应在onClick()之外初始化,否则会重置为默认值每次点击我都很确定你不想要(感谢323go指出这一点)。