应用程序崩溃

时间:2017-12-31 16:33:37

标签: android nullpointerexception

我正在学习android。每次我运行应用程序时都会崩溃。我似乎无法找到任何错误。需要帮助。

这是主要代码。

MainActivity.java

package com.example.arnab.myfirstapplication;

        import android.support.v7.app.AppCompatActivity;
        import android.app.Activity;
        import android.os.Bundle;
        import android.view.View;
        import android.widget.Button;
        import android.widget.EditText;
        import android.widget.TextView;

public class MainActivity extends Activity implements View.OnClickListener {

    Button btnAdd = (Button)findViewById(R.id.btnAdd);
    EditText num1 = (EditText)findViewById(R.id.num1);
    EditText num2 = (EditText)findViewById(R.id.num2);
    TextView result = (TextView)findViewById(R.id.result);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnAdd.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if(v == btnAdd){
            int n1 = Integer.parseInt(num1.getText().toString());
            int n2 = Integer.parseInt(num2.getText().toString());
            int sum = n1 + n2;
            result.setText(Integer.toString(sum));
        }
    }

    @Override
    public void onPointerCaptureChanged(boolean hasCapture) {

    }
}

请帮助非常感谢。我被困在这个阶段。无论我做什么,应用程序崩溃。

更新 我不知道在 setcontentview 之前无法使用 findViewById 。那时我的逻辑不清楚。对此抱歉。

2 个答案:

答案 0 :(得分:2)

您不能在方法块之外调用findViewById或任何其他方法。

btnAdd = (Button)findViewById(R.id.btnAdd);
num1 = (EditText)findViewById(R.id.num1);
num2 = (EditText)findViewById(R.id.num2);
result = (TextView)findViewById(R.id.result);

setContentView onCreate之后添加这些代码,并从顶部删除所有初始化。

答案 1 :(得分:1)

试试这个

 package com.example.arnab.myfirstapplication;

    import android.support.v7.app.AppCompatActivity;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;

 public class MainActivity extends Activity implements View.OnClickListener 
 {



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

Button btnAdd = (Button)findViewById(R.id.btnAdd);
EditText num1 = (EditText)findViewById(R.id.num1);
EditText num2 = (EditText)findViewById(R.id.num2);
TextView result = (TextView)findViewById(R.id.result);

    btnAdd.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    if(v == btnAdd){
        int n1 = Integer.parseInt(num1.getText().toString());
        int n2 = Integer.parseInt(num2.getText().toString());
        int sum = n1 + n2;
        result.setText(Integer.toString(sum));
    }
}

@Override
public void onPointerCaptureChanged(boolean hasCapture) {

}
}