Java onCreate()中Android程序中的NullPointerException
我是android的新手,正在编写一个可以解决物理问题的应用程序。多亏了这些论坛的一些帮助,数学进展顺利,但当我尝试从列表开始活动时,在新活动的onCreate方法中出现了nullpointerexception。不过,这似乎没有多大意义,因为只有一个submit按钮可以从一些EditText视图执行数学运算。这是我的密码Java onCreate()中Android程序中的NullPointerException,java,android,nullpointerexception,oncreate,Java,Android,Nullpointerexception,Oncreate,我是android的新手,正在编写一个可以解决物理问题的应用程序。多亏了这些论坛的一些帮助,数学进展顺利,但当我尝试从列表开始活动时,在新活动的onCreate方法中出现了nullpointerexception。不过,这似乎没有多大意义,因为只有一个submit按钮可以从一些EditText视图执行数学运算。这是我的密码 package android.physicsengine; import android.app.Activity; import android.os.Bundle;
package android.physicsengine;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import java.lang.Math;
public class ProjectileMotion extends Activity {
private EditText acceleration;
private EditText finalVelocity;
private EditText initialVelocity;
private EditText time;
private EditText deltay;
private EditText velocity;
private EditText deltax;
private Button submitButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.projectile_motion_layout);
submitButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
acceleration = (EditText)findViewById(R.id.acceleration);
double a = Doublify(acceleration);
finalVelocity = (EditText)findViewById(R.id.finalVelocity);
double vf = Doublify(finalVelocity);
initialVelocity = (EditText)findViewById(R.id.intitialVelocity);
double vi = Doublify(initialVelocity);
time = (EditText)findViewById(R.id.time);
double t = Doublify(time);
deltay = (EditText)findViewById(R.id.deltay);
double y = Doublify(deltay);
velocity = (EditText)findViewById(R.id.velocity);
double vx = Doublify(velocity);
deltax = (EditText)findViewById(R.id.deltax);
double x = Doublify(deltax);
//Y Axis
if(time.getText()==null && deltay.getText()==null){
time.setText(Double.toString((vf-vi)/a));
deltay.setText(Double.toString(((vf-vi)/a)+(a*Math.pow(((vf-vi)/a),2))));
}
if(acceleration.getText()==null && deltay.getText()==null){
acceleration.setText(Double.toString((vf-vi)/t));
deltay.setText(Double.toString((vi*t+.5*((vf-vi)/t))*Math.pow(t,2)));
}
if(acceleration.getText()==null && time.getText()==null){
acceleration.setText(Double.toString(((Math.pow(vf,2)-Math.pow(vi,2)))/2*y));
time.setText(Double.toString(2*y*(vf-vi)/(Math.pow(vf,2)-vi)));
}
if(initialVelocity.getText()==null && deltay.getText()==null){
initialVelocity.setText(Double.toString(vf-a*t));
deltay.setText(Double.toString((vf-a*t)*t+.5*a*Math.pow(t,2)));
}
if(initialVelocity.getText()==null && time.getText()==null){
initialVelocity.setText(Double.toString(Math.sqrt(Math.pow(vf,2)-2*a*y)));
time.setText(Double.toString((vf-Math.sqrt(Math.pow(vf,2)-2*a*y))/2));
}
if(initialVelocity.getText()==null && acceleration.getText()==null){
initialVelocity.setText(Double.toString(vf-2*(vf-y/t)));
acceleration.setText(Double.toString((2/t)*(vf-y/t)));
}
if(finalVelocity.getText()==null && deltay.getText()==null){
finalVelocity.setText(Double.toString(vi+a*t));
deltay.setText(Double.toString(vi*t+.5*a*Math.pow(t,2)));
}
if(finalVelocity.getText()==null && time.getText()==null){
finalVelocity.setText(Double.toString(Math.sqrt(Math.pow(vi,2)+2*a*y)));
time.setText(Double.toString(((Math.sqrt(Math.pow(vi,2)+2*a*y)-vi))/a));
}
if(finalVelocity.getText()==null && acceleration.getText()==null){
acceleration.setText(Double.toString(2*(y-vi*t)/Math.pow(t,2)));
finalVelocity.setText(Double.toString(vi+(2*(y-vi*t)/t)));
}
if(finalVelocity.getText()==null && initialVelocity.getText()==null){
initialVelocity.setText(Double.toString((y-.5*a*Math.pow(t,2))/t));
finalVelocity.setText(Double.toString((y-.5*a*Math.pow(t,2))/t)+a*t);
}
}
});
}
private double Doublify(EditText editText){
if(editText.getText()!= null){
return Double.parseDouble(editText.getText().toString());
}
return 0;
}
}
还有XML
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TableRow>
<TextView android:text="Projectile Motion Engine"
android:textSize="25dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_span="4"
android:layout_gravity="center" />
</TableRow>
<TableRow>
<TextView android:text="X axis"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_span="2"
android:textStyle="bold"/>
<TextView android:text="Y axis"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_span="2"
android:textStyle="bold"/>
</TableRow>
<TableRow>
<TextView android:text="accel(m/s^2)="
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<EditText android:id="@+id/acceleration"
android:text="9.8"
android:inputType="numberDecimal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView android:text="deltax(m)="
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<EditText android:id="@+id/deltax"
android:inputType="numberDecimal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</TableRow>
<TableRow>
<TextView android:text="init v(m/s)="
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<EditText android:id="@+id/intitialVelocity"
android:inputType="numberDecimal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView android:text="v ="
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<EditText android:id="@+id/velocity"
android:inputType="numberDecimal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</TableRow>
<TableRow>
<TextView android:text="final v(m/s)="
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<EditText android:id="@+id/finalVelocity"
android:inputType="numberDecimal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView android:text="time(s)="
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<EditText android:id="@+id/time"
android:inputType="numberDecimal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</TableRow>
<TableRow>
<TextView android:text="deltay(m)="
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<EditText android:id="@+id/deltay"
android:inputType="numberDecimal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button android:id="@+id/submitButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_span="2"
android:text="Launch" />
</TableRow>
</TableLayout>
投射物运动布局可能不在android清单中。我会先检查一下
您可以在清单中的“应用程序”选项卡下找到应用程序节点 投射物运动布局可能不在您的android清单中。我会先检查一下
super.onCreate(savedInstanceState);
setContentView(R.layout.projectile_motion_layout);
submitButton.setOnClickListener(new OnClickListener() {
您可以在清单中的“应用程序”选项卡下找到应用程序节点
super.onCreate(savedInstanceState);
setContentView(R.layout.projectile_motion_layout);
submitButton.setOnClickListener(new OnClickListener() {
您忘记使用findViewById分配submitButton
您忘记使用findViewById分配submitButton
根据您发布的代码,您似乎调用了 submitButton.SetOnClickListener新建OnClickListener{
在用一个值实例化submitButton之前。这将导致一个空指针,根据您发布的代码,您似乎调用了 submitButton.SetOnClickListener新建OnClickListener{
在使用值实例化submitButton之前。这将导致空指针供将来参考,如果您有一大块代码,可以通过突出显示代码块并点击{}来格式化它按钮。使用反勾号仅适用于内联代码IIRC。张贴StackTrace并确定它抛出哪一行。为便于将来参考,如果您有一大块代码,可以通过突出显示代码块并点击{}来格式化它按钮。使用反勾号仅适用于内联代码,IIRC。发布StackTrace并确定它抛出哪一行。抱歉,但我在这方面还是有点陌生。如何将布局添加到清单中。我已经添加了活动:如果您的活动列在清单中应用程序选项卡的应用程序节点部分下,那么您只需要这样做d要做。我将通过注释除基本内容外的所有内容来开始调试,确保它正常工作,并从那里开始工作。您还可以通过双击行号并确保在清单中将debugable设置为true来设置断点。谢谢,但它显然已在清单中正确注册。谢谢您的帮助,though、 很抱歉,在这一点上我还是个新手。如何将布局添加到清单中。我已经添加了活动:如果您的活动列在清单中“应用程序”选项卡的“应用程序节点”部分下,则您只需这样做。我将通过注释除基本内容外的所有内容来开始调试,请确保该操作正常nd从那里开始工作。您还可以通过双击行号并确保清单中的debugable设置为true来设置断点。谢谢,但它显然已在清单中正确注册。不过,感谢您的帮助。谢谢。这正是问题所在。谢谢。这正是问题所在。