Java android应用程序项目的未知Bug

Java android应用程序项目的未知Bug,java,android,eclipse,sdk,ide,Java,Android,Eclipse,Sdk,Ide,我是一名初学者开发人员,我已经为我的物理研究启动了一个android应用程序项目,包括所有的公式和函数,我有一个恼人的错误,我不知道如何解决他 错误在于,当我运行应用程序时,它会打开我创建的菜单,当我选择此加速选项时,它会使应用程序崩溃。 但所有其他选择都进展顺利 java类: import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; imp

我是一名初学者开发人员,我已经为我的物理研究启动了一个android应用程序项目,包括所有的公式和函数,我有一个恼人的错误,我不知道如何解决他

错误在于,当我运行应用程序时,它会打开我创建的菜单,当我选择此加速选项时,它会使应用程序崩溃。 但所有其他选择都进展顺利

java类:

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Acceleration extends Activity {

EditText etV0, etV1, etT0, etT1;
TextView tvAccResult;
Button accC;
double CetV0, CetV1, CetT0, CetT1, CtvAccResult;

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

    initialize();

    accC.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            tvAccResult.setText(Double.toString(CtvAccResult));
        }
    });

}

private void initialize() {
    etV0 = (EditText) findViewById(R.id.etV0);
    etV1 = (EditText) findViewById(R.id.etV1);
    etT0 = (EditText) findViewById(R.id.etT0);
    etT1 = (EditText) findViewById(R.id.etT1);
    tvAccResult = (TextView) findViewById(R.id.tvAccResult);
    accC = (Button) findViewById(R.id.accC);

    CetV0 = (Double.parseDouble(etV0.getText().toString()));
    CetV1 = (Double.parseDouble(etV1.getText().toString()));
    CetT0 = (Double.parseDouble(etT0.getText().toString()));
    CetT1 = (Double.parseDouble(etT1.getText().toString()));

    CtvAccResult = (double) ((CetV0 - CetV1) / (CetT0 - CetT1));
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.acceleration, menu);
    return true;
}

}
这是布局代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Acceleration" >

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:paddingTop="10dp"
    android:text="@string/acceleration"
    android:textSize="30dp" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal"
    android:paddingTop="40dp"
    android:weightSum="100" >

    <EditText
        android:id="@+id/etV0"
        android:layout_width="15dp"
        android:layout_height="wrap_content"
        android:layout_weight="16"
        android:ems="10"
        android:hint="V0" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="-"
        android:textSize="30dp" />

    <EditText
        android:id="@+id/etV1"
        android:layout_width="15dp"
        android:layout_height="wrap_content"
        android:layout_weight="16"
        android:ems="10"
        android:hint="V1" />
</LinearLayout>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="________________________" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal"
    android:paddingTop="10dp"
    android:paddingBottom="20dp"
    android:weightSum="100" >

    <EditText
        android:id="@+id/etT0"
        android:layout_width="15dp"
        android:layout_height="wrap_content"
        android:layout_weight="16"
        android:ems="10"
        android:hint="t0" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="-"
        android:textSize="30dp" />

    <EditText
        android:id="@+id/etT1"
        android:layout_width="15dp"
        android:layout_height="wrap_content"
        android:layout_weight="16"
        android:ems="10"
        android:hint="t1" />
</LinearLayout>

<Button
    android:id="@+id/accC"
    android:layout_width="wrap_content"
    android:layout_height="45dp"
    android:layout_gravity="center"
    android:text="Calculate"
    android:textSize="15dp" />

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal"
    android:paddingTop="30dp"
    android:weightSum="100" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="50"
        android:paddingLeft="20dp"
        android:text="Result: "
        android:textSize="20dp" />

    <TextView
        android:id="@+id/tvAccResult"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="50"
        android:paddingLeft="20dp"
        android:text=""
        android:textSize="20dp" />
</LinearLayout>

</LinearLayout>



单击下面的内侧按钮。也可以使用try-catch

try
{
CetV0 = (Double.parseDouble(etV0.getText().toString()));
CetV1 = (Double.parseDouble(etV1.getText().toString()));
CetT0 = (Double.parseDouble(etT0.getText().toString()));
CetT1 = (Double.parseDouble(etT1.getText().toString()));

CtvAccResult = (double) ((CetV0 - CetV1) / (CetT0 - CetT1));
}catch(NumberFormatException e)
{
      e.printStackTrace();
}    

错误是什么?如果没有日志或描述,我们如何提供帮助?您需要将所有这些
CetV0=(Double.parseDouble(etV0.getText().toString())
移动到按钮单击事件中非常感谢,这解决了所有问题thing@Rubik951此外,它还将它们放在一个try块和catch NumberFormatException中。因此,如果use输入非双精度值a,则获取aNFE@Rubik951查看我的帖子
only this code should be placed in onCreate()

    etV0 = (EditText) findViewById(R.id.etV0);
    etV1 = (EditText) findViewById(R.id.etV1);
    etT0 = (EditText) findViewById(R.id.etT0);
    etT1 = (EditText) findViewById(R.id.etT1);
    tvAccResult = (TextView) findViewById(R.id.tvAccResult);
    accC = (Button) findViewById(R.id.accC);


and this code should be present in the block of event fired (like when button ***accC*** is clicked):


    CetV0 = (Double.parseDouble(etV0.getText().toString()));
    CetV1 = (Double.parseDouble(etV1.getText().toString()));
    CetT0 = (Double.parseDouble(etT0.getText().toString()));
    CetT1 = (Double.parseDouble(etT1.getText().toString()));

    CtvAccResult = (double) ((CetV0 - CetV1) / (CetT0 - CetT1));
> so the final result will be  :
    public class Acceleration extends Activity {

    EditText etV0, etV1, etT0, etT1
    TextView tvAccResult;
    Button accC;
    double CetV0, CetV1, CetT0, CetT1, CtvAccResult;

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

    initialize();

    accC.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

    CetV0 = (Double.parseDouble(etV0.getText().toString()));
    CetV1 = (Double.parseDouble(etV1.getText().toString()));
    CetT0 = (Double.parseDouble(etT0.getText().toString()));`enter code here`
    CetT1 = (Double.parseDouble(etT1.getText().toString()));

    CtvAccResult = (double) ((CetV0 - CetV1) / (CetT0 - CetT1));
            tvAccResult.setText(Double.toString(CtvAccResult));
        }
    });

}

    private void initialize() {
        etV0 = (EditText) findViewById(R.id.etV0);
        etV1 = (EditText) findViewById(R.id.etV1);
        etT0 = (EditText) findViewById(R.id.etT0);
        etT1 = (EditText) findViewById(R.id.etT1);
        tvAccResult = (TextView) findViewById(R.id.tvAccResult);
        accC = (Button) findViewById(R.id.accC);

    }



 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.acceleration, menu);
        return true;
    }

    }
try
{
CetV0 = (Double.parseDouble(etV0.getText().toString()));
CetV1 = (Double.parseDouble(etV1.getText().toString()));
CetT0 = (Double.parseDouble(etT0.getText().toString()));
CetT1 = (Double.parseDouble(etT1.getText().toString()));

CtvAccResult = (double) ((CetV0 - CetV1) / (CetT0 - CetT1));
}catch(NumberFormatException e)
{
      e.printStackTrace();
}