Android 无法理解运行以下代码时应用程序崩溃的原因
下面是计算器应用程序的mainactivity代码。在调试过程中,会弹出一条消息说“不幸的是,应用程序已停止”。有人能帮我吗?plzzz无法找出原因 主要活动Android 无法理解运行以下代码时应用程序崩溃的原因,android,Android,下面是计算器应用程序的mainactivity代码。在调试过程中,会弹出一条消息说“不幸的是,应用程序已停止”。有人能帮我吗?plzzz无法找出原因 主要活动 package com.example.anindyaroy.calculator; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.But
package com.example.anindyaroy.calculator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
EditText First = (EditText)findViewById(R.id.FirstNum);
EditText Second = (EditText)findViewById(R.id.SecondNum);
EditText Operator = (EditText)findViewById(R.id.Operater);
Button b = (Button)findViewById(R.id.button);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b.setOnClickListener(this);
}
public void onClick(View view)
{
TextView value= (TextView)findViewById(R.id.Value);
double first = Double.parseDouble(First.getText().toString());
double second = Double.parseDouble(Second.getText().toString());
String operator = Operator.getText().toString();
char c = operator.charAt(0);
double result=0.0;
switch(c)
{
case '+':
result = first+second;
break;
case '-':
result = first - second;
break;
case '*':
result = first * second;
break;
case '/':
result = first/second;
break;
case '%':
result = first%second;
break;
default:
value.setText("Invalid");
}
value.setText(String.valueOf(result));
}
}
在setContentView(R.layout.your_layout)函数调用之后,需要在onCreate()方法内调用findViewById(R.id.your_视图)函数
之所以需要这样做,是因为当活动创建视图时,需要调用findViewById(R.id.your_视图),以便成功找到所需的视图。在setContentView(R.layout.your_layout)函数调用之后,需要在onCreate()方法内调用函数findViewById(R.id.your_视图)
您需要这样做,因为当“活动”创建视图时,findViewById(R.id.your_视图)需要被调用,以便成功找到您需要的视图。按如下方式更改您的类:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
EditText First;
EditText Second;
EditText Operator;
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
First = (EditText) findViewById(R.id.FirstNum);
Second = (EditText) findViewById(R.id.SecondNum);
Operator = (EditText) findViewById(R.id.Operater);
b = (Button) findViewById(R.id.button);
b.setOnClickListener(this);
}
public void onClick(View view) {
TextView value = (TextView) findViewById(R.id.Value);
double first = Double.parseDouble(First.getText().toString());
double second = Double.parseDouble(Second.getText().toString());
String operator = Operator.getText().toString();
char c = operator.charAt(0);
double result = 0.0;
switch (c) {
case '+':
result = first + second;
break;
case '-':
result = first - second;
break;
case '*':
result = first * second;
break;
case '/':
result = first / second;
break;
case '%':
result = first % second;
break;
default:
value.setText("Invalid");
}
value.setText(String.valueOf(result));
}
}
只能在setContentView(…)之后调用findViewById。按如下方式更改您的类:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
EditText First;
EditText Second;
EditText Operator;
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
First = (EditText) findViewById(R.id.FirstNum);
Second = (EditText) findViewById(R.id.SecondNum);
Operator = (EditText) findViewById(R.id.Operater);
b = (Button) findViewById(R.id.button);
b.setOnClickListener(this);
}
public void onClick(View view) {
TextView value = (TextView) findViewById(R.id.Value);
double first = Double.parseDouble(First.getText().toString());
double second = Double.parseDouble(Second.getText().toString());
String operator = Operator.getText().toString();
char c = operator.charAt(0);
double result = 0.0;
switch (c) {
case '+':
result = first + second;
break;
case '-':
result = first - second;
break;
case '*':
result = first * second;
break;
case '/':
result = first / second;
break;
case '%':
result = first % second;
break;
default:
value.setText("Invalid");
}
value.setText(String.valueOf(result));
}
}
您只能在setContentView(…)之后调用findViewById。在
setContentView
之后移动您的this codefindViewById
在setContentView
之后移动您的this codefindViewById
更好地编写TextView值=(TextView)findViewById(R.id.value)代码>也在onCreate
中。最好编写TextView值=(TextView)findViewById(R.id.value)代码>也在onCreate
中。