我正在学习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 。那时我的逻辑不清楚。对此抱歉。
答案 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) {
}
}