Java android应用程序项目的未知Bug
我是一名初学者开发人员,我已经为我的物理研究启动了一个android应用程序项目,包括所有的公式和函数,我有一个恼人的错误,我不知道如何解决他 错误在于,当我运行应用程序时,它会打开我创建的菜单,当我选择此加速选项时,它会使应用程序崩溃。 但所有其他选择都进展顺利 java类: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
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();
}