Java 为什么我的代码强制关闭?

Java 为什么我的代码强制关闭?,java,android,Java,Android,我的代码从第一行到上面的setOnClickListener运行正常,但当我设置Click Listener时,我的活动被强制关闭。我已经试图纠正这一点 我想我的错误在onclick listener标记中 这段代码有什么问题 package com.Learning.math; import java.util.Random; import android.app.Activity; import android.content.Intent; import android.os.Bund

我的代码从第一行到上面的setOnClickListener运行正常,但当我设置Click Listener时,我的活动被强制关闭。我已经试图纠正这一点

我想我的错误在onclick listener标记中

这段代码有什么问题

package com.Learning.math;

import java.util.Random;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Plus extends Activity {
private TextView num11;
private TextView num22;

public Integer no1;
public Integer no2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.plus_page);
    // Set Numbers To TextView's
    num11 = (TextView) findViewById(R.id.num1);
    num22 = (TextView) findViewById(R.id.num2);
    Intent iin = getIntent();
    Bundle b = iin.getExtras();
    if (b != null) {
        final String numb1 = (String) b.get("from");
        final String numb2 = (String) b.get("to");
        Integer min = Integer.valueOf(numb1);
        Integer max = Integer.valueOf(numb2);
        Random r1 = new Random();
        int random1 = r1.nextInt(max + -min) + min;
        Random r2 = new Random();
        int random2 = r2.nextInt(max - min) + min;
        String str1 = String.valueOf(random1);
        String str2 = String.valueOf(random2);
        num11.setText(str1 + "");
        num22.setText(str2 + "");
        no1 = Integer.valueOf(str1);
        no2 = Integer.valueOf(str2);

    }
 // Problem From this line

    Button btn = (Button) findViewById(R.id.button1);
    btn.setOnClickListener(new OnClickListener() {
        final EditText answerbox = (EditText) findViewById(R.id.answer_box);
        String Answr = answerbox.getText().toString();

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            Integer answer = Integer.valueOf(Answr);
            if (answer == (no2 + no1)) {
                num11.setText("OK OK OK ");
            } else {
                num11.setText("No No No");
            }
        }
    });

}

}
试试这个:

//declare Button btn
Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.plus_page);
    //Your code here

    //Added code
    btn = (Button) findViewById(R.id.button1);

    btn.setOnClickListener(btnOnClick)
}


View.OnClickListener btnOnClick = new OnClickListener() 
{
    //Your code here

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

        //Your code here
    }
});

编辑:忽略此项并发布错误日志。我没有完全正确地阅读您的代码。我以为您正在初始化按钮并在
onCreate
外部调用
onClickListener

setOnClickListener
method
EditText answerbox
中的为空,因此在
onCreate
方法中定义您的
EditText answerbox
。作为

    final EditText answerbox = (EditText) findViewById(R.id.answer_box);

    Button btn = (Button) findViewById(R.id.button1);
    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            String Answr = answerbox.getText().toString();

            Integer answer = Integer.valueOf(Answr);
            if (answer == (no2 + no1)) {
                num11.setText("OK OK OK ");
            } else {
                num11.setText("No No No");
            }
        }
    });

在何处取消单击?在
onCreate
之外,它就像一个函数。@user3760297乐于帮助,享受编码。我希望用户键入正确答案:1-更改版面背景颜色。2-向True flag添加一个步骤。:(:(声誉低于10的用户在提问后8小时内无法回答自己的问题。您可以回答2014年7月15日12:37:02上午。在此之前,请使用评论或编辑您的问题。