Java 无法启动活动组件信息-应用程序崩溃
我正在做一个体重指数计算器。在主活动中,我有单选按钮来检查用户想要公制还是英制。最近,我加入了一个计时器来确定用户何时完成键入以自动计算他们的体重指数。英制计算工作正常,但当我单击公制单选按钮时,它立即崩溃。错误消息无法启动活动组件信息。这以前从未发生过。除了不同的测量之外,代码应该相当相似 谢谢你的帮助 以下是度量活动的代码:Java 无法启动活动组件信息-应用程序崩溃,java,android,Java,Android,我正在做一个体重指数计算器。在主活动中,我有单选按钮来检查用户想要公制还是英制。最近,我加入了一个计时器来确定用户何时完成键入以自动计算他们的体重指数。英制计算工作正常,但当我单击公制单选按钮时,它立即崩溃。错误消息无法启动活动组件信息。这以前从未发生过。除了不同的测量之外,代码应该相当相似 谢谢你的帮助 以下是度量活动的代码: public void performCalculation() { EditText weightET = (EditText) findViewById(R
public void performCalculation()
{
EditText weightET = (EditText) findViewById(R.id.weightET);
weightET.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
private Timer timer = new Timer();
private final long DELAY = 500;
@Override
public void afterTextChanged(final Editable editable)
{
timer.cancel();
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run()
{
runOnUiThread(new Runnable() {
@Override
public void run()
{
calculate();
}
});
}
}, DELAY);
}
});
}
public void calculate()
{
EditText heightET = (EditText) findViewById(R.id.height);
EditText weightET = (EditText) findViewById(R.id.weight);
TextView yourBMI = (TextView) findViewById(R.id.yourBMI);
TextView bmiClass = (TextView) findViewById(R.id.bmiClass);
double height;
double weight;
double bmi;
double bmiRoundOff;
weight = Double.parseDouble(weightET.getText().toString());
height = Double.parseDouble(heightET.getText().toString());
bmi = (weight) / (height * height);
bmiRoundOff = Math.round(bmi * 100.00) / 100.00;
yourBMI.setText("Your BMI Is " + String.valueOf(bmiRoundOff));
if(bmiRoundOff < 18.5)
{
bmiClass.setText("Your BMI Class: Underweight");
}
if(bmiRoundOff > 18.5 && bmiRoundOff <= 24.9)
{
bmiClass.setText("Your BMI Class: Normal");
}
if(bmiRoundOff >= 25.0 && bmiRoundOff <= 29.0)
{
bmiClass.setText("Your BMI Class: Overweight!");
}
if(bmiRoundOff > 29.0)
{
bmiClass.setText("Your BMI Class: Obese");
}
public void performCalculation()
{
EditText weightET = (EditText) findViewById(R.id.weightET);
weightET.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
private Timer timer = new Timer();
private final long DELAY = 500;
@Override
public void afterTextChanged(final Editable editable)
{
timer.cancel();
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run()
{
runOnUiThread(new Runnable() {
@Override
public void run()
{
calculate();
}
});
}
}, DELAY);
}
});
}
public void calculate()
{
EditText weightET = (EditText) findViewById(R.id.weightET);
EditText feetET = (EditText) findViewById(R.id.feetET);
EditText inchesET = (EditText) findViewById(R.id.inchesET);
TextView yourBMI = (TextView) findViewById(R.id.yourBMI);
TextView bmiClass = (TextView) findViewById(R.id.bmiClass);
double feet;
double feetToInches;
double inches;
double totalInches;
double weight;
double bmi;
double bmiRoundOff;
weight = Double.parseDouble(weightET.getText().toString());
feet = Double.parseDouble(feetET.getText().toString());
inches = Double.parseDouble(inchesET.getText().toString());
feetToInches = feet * 12;
totalInches = feetToInches + inches;
bmi = (weight * 703) / (totalInches * totalInches);
bmiRoundOff = Math.round(bmi * 100.00) / 100.00;
yourBMI.setText("Your BMI Is " + String.valueOf(bmiRoundOff));
if(bmiRoundOff < 18.5)
{
bmiClass.setText("Your BMI Class: Underweight");
}
if(bmiRoundOff > 18.5 && bmiRoundOff <= 24.9)
{
bmiClass.setText("Your BMI Class: Normal");
}
if(bmiRoundOff >= 25.0 && bmiRoundOff <= 29.0)
{
bmiClass.setText("Your BMI Class: Overweight!");
}
if(bmiRoundOff > 29.0) {
bmiClass.setText("Your BMI Class: Obese");
}
}
public void main (View view)
{
Intent intent = new Intent(getApplicationContext() , MainActivity.class);
startActivity(intent);
}
public void metric (View view)
{
Intent i = new Intent(getApplicationContext() , metric_activity.class);
startActivity(i);
}
public void imperial (View view)
{
Intent i = new Intent(getApplicationContext() , imperial_activity.class);
startActivity(i);
}
日志:
Process: com.jdaapps.bmicalculator, PID: 2004
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jdaapps.bmicalculator/com.jdaapps.bmicalculator.metric_activity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.jdaapps.bmicalculator.metric_activity.performCalculation(metric_activity.java:23)
at com.jdaapps.bmicalculator.metric_activity.onCreate(metric_activity.java:110)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
我想它没有得到你的活动是什么,如果它在mainActivity中,你可以这样做:mainActivity.this.StartActivityContent 如果您不知道哪些活动主要发生在listview中,您可以定义一个类扩展应用程序,并在清单中将其定义为应用程序名,在类activity CurrentActivity和每个activity中都有一个变量 在oncreat和onresume方法中,例如,您的静态类是G:G.currentActivity=this; 然后你可以在任何你想要的地方像你的一样叫它:
G.currentActivity.startActivity(intent) ;
请提供错误的堆栈跟踪。这是否回答了您的问题?