插入模型安卓工作室时出错



尝试将数据插入模型时不断收到错误。这是我的模型,下面是获取要插入的数据的函数。我已经调试了它,它正好在workout.setId(0)停止.

锻炼.java:

public class Workouts {
private int id;
private String description;
private int weight;
private int reps;
public void setId( int newId ) {
id = newId;
}
public void setDescription( String description ) {
this.description = description;
}
public void setWeight( int weight ) {
this.weight = weight;
}
public void setReps( int reps ) {
this.reps = reps;
}
public int getId( ) {
return id;
}
public String getDescription(  ) {
return description;
}
public int getWeight( ) {
return weight;
}
public int getReps( ) {
return reps;
}
}

主要活动.java:

public void insert( View v ) {
String description = editDescription.getText( ).toString( );
String weightString = editWeight.getText( ).toString( );
String repsString = editReps.getText( ).toString( );
try {
int weight = Integer.parseInt( weightString);
int reps = Integer.parseInt( repsString);
workout.setId(0);
workout.setDescription(description);
workout.setWeight(weight);
workout.setReps(reps);
myDb.insert( workout);
Toast.makeText( this, "Workout added", Toast.LENGTH_SHORT ).show( );
} catch( NumberFormatException nfe ) {
Toast.makeText( this, "Number error", Toast.LENGTH_LONG ).show( );
}
}

日志猫:

05-18 06:57:42.039 11900-11900/com.example.charliebatista.youtube E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.charliebatista.youtube, PID: 11900
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:6256) 
at android.view.View$PerformClick.run(View.java:24701) 
at android.os.Handler.handleCallback(Handler.java:789) 
at android.os.Handler.dispatchMessage(Handler.java:98) 
at android.os.Looper.loop(Looper.java:164) 
at android.app.ActivityThread.main(ActivityThread.java:6541) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.charliebatista.youtube.Workouts.setId(int)' on a null object reference
at com.example.charliebatista.youtube.MainActivity.insert(MainActivity.java:54)
at java.lang.reflect.Method.invoke(Native Method) 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
at android.view.View.performClick(View.java:6256) 
at android.view.View$PerformClick.run(View.java:24701) 
at android.os.Handler.handleCallback(Handler.java:789) 
at android.os.Handler.dispatchMessage(Handler.java:98) 
at android.os.Looper.loop(Looper.java:164) 
at android.app.ActivityThread.main(ActivityThread.java:6541) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

首先创建一个Workouts的实例初始化它。

public void insert( View v ) {
String description = editDescription.getText( ).toString( );
String weightString = editWeight.getText( ).toString( );
String repsString = editReps.getText( ).toString( );
try {
Workouts workout = new Workouts(); // add this line
int weight = Integer.parseInt( weightString);
int reps = Integer.parseInt( repsString);
workout.setId(0);
workout.setDescription(description);
workout.setWeight(weight);
workout.setReps(reps);
myDb.insert( workout);
Toast.makeText( this, "Workout added", Toast.LENGTH_SHORT ).show();
} catch( NumberFormatException nfe ) {
Toast.makeText( this, "Number error", Toast.LENGTH_LONG ).show( );
}
}

传递内容以供参考

public void setId( int newId ) {
this.id = newId;
}

并初始化锻炼类的实例

Workout workout = new Workout();

最新更新