Java Android Studio应用程序在尝试将记录插入数据库时崩溃,错误消息不';没有道理
我正在为我的a级控制评估项目工作。在上下文中,我正在创建一个应用程序来管理一个Scout组,目前我正在允许用户创建一个包含Scout详细信息的记录,并将其插入数据库。这是我基于数据库创建的第一个项目,我以前从未使用过Android Studio、XML或Java,也没有人教过我——这一切都是我自己完成的。Java Android Studio应用程序在尝试将记录插入数据库时崩溃,错误消息不';没有道理,java,android,database,sqlite,android-studio,Java,Android,Database,Sqlite,Android Studio,我正在为我的a级控制评估项目工作。在上下文中,我正在创建一个应用程序来管理一个Scout组,目前我正在允许用户创建一个包含Scout详细信息的记录,并将其插入数据库。这是我基于数据库创建的第一个项目,我以前从未使用过Android Studio、XML或Java,也没有人教过我——这一切都是我自己完成的。 由于这个原因,我遇到了不少麻烦。我在将记录插入数据库时遇到了问题——我已经学习了几个不同的教程,但它似乎仍然不起作用。IDE本身没有给我一个错误,但是当我在运行我的应用程序的设备上单击“保存”
由于这个原因,我遇到了不少麻烦。我在将记录插入数据库时遇到了问题——我已经学习了几个不同的教程,但它似乎仍然不起作用。IDE本身没有给我一个错误,但是当我在运行我的应用程序的设备上单击“保存”按钮时,它崩溃了。我完全不知道错误在哪里,所以我从数据库管理器和“AddaScout”屏幕中附加了一些代码 非常感谢
package com.example.atomi.scoutmanagerprototype;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class frmAddAScout extends AppCompatActivity {
RadioGroup genderGroup;
RadioGroup photoGroup;
TextView lblError;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_frm_add_ascout);
genderGroup=findViewById(R.id.grpGender);
photoGroup=findViewById(R.id.grpPhotos);
//Creating options for the section spinner & populating it
List<String> sectionArray=new ArrayList<String>();
sectionArray.add("Beavers");
sectionArray.add("Cubs");
sectionArray.add("Scouts");
sectionArray.add("Explorers");
sectionArray.add("Network");
sectionArray.add("Leaders");
ArrayAdapter<String> sectionAdapter=new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_dropdown_item, sectionArray
);
sectionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner sectionItems=(Spinner) findViewById(R.id.spinSection);
sectionItems.setAdapter(sectionAdapter);
//creating options for the swimming spinner & populating it
List<String> swimmingArray=new ArrayList<String>();
swimmingArray.add("Unable to swim");
swimmingArray.add("Fairly confident");
swimmingArray.add("Very confident");
ArrayAdapter<String> swimmingAdapter=new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_dropdown_item, swimmingArray
);
swimmingAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner swimmingItems=(Spinner) findViewById(R.id.spinSwimming);
swimmingItems.setAdapter(swimmingAdapter);
}
public void backToScoutMenu(View view)
{
Intent goBack = new Intent(frmAddAScout.this, frmScoutsMenu.class);
startActivity(goBack);
}
public void saveScout(View v)
{
databaseHandler db;
db=new databaseHandler(getApplicationContext());
//To do: Import all IDs created thus far & check against them to ensure it's unique here
int id = (int)(Math.random()*(9999)+1);
String firstname;
if ((findViewById(R.id.txtForename).toString())!="")
{
firstname=(findViewById(R.id.txtForename).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String lastname;
if ((findViewById(R.id.txtSurname).toString())!="")
{
lastname=(findViewById(R.id.txtSurname).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String dob;
if ((findViewById(R.id.txtDateOfBirth).toString())!="")
{
dob=(findViewById(R.id.txtDateOfBirth).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
Spinner grabSection=findViewById(R.id.spinSection);
String section=(grabSection.getSelectedItem().toString());
boolean sex;
int genderselected=genderGroup.getCheckedRadioButtonId();
if (genderselected==1)
{
sex=true; //True means male
}
else if (genderselected==0)
{
sex=false;
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String address1;
if ((findViewById(R.id.txtAddress1).toString())!="")
{
address1=(findViewById(R.id.txtAddress1).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String address2;
if ((findViewById(R.id.txtAddress2).toString())!="")
{
address2=(findViewById(R.id.txtAddress2).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String city;
if ((findViewById(R.id.txtCity).toString())!="")
{
city=(findViewById(R.id.txtCity).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String postcode;
if ((findViewById(R.id.txtPostCode).toString())!="")
{
postcode=(findViewById(R.id.txtPostCode).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String religion;
if ((findViewById(R.id.txtReligion).toString())!="")
{
religion=(findViewById(R.id.txtReligion).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String emergencyname;
if ((findViewById(R.id.txtEmergencyContactName).toString())!="")
{
emergencyname=(findViewById(R.id.txtEmergencyContactName).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
int emergencyhome;
if ((findViewById(R.id.txtEmergencyHomePhone).toString())!="")
{
emergencyhome=Integer.parseInt((findViewById(R.id.txtEmergencyHomePhone)).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
int emergencymobile;
if ((findViewById(R.id.txtEmergencyMobilePhone).toString())!="")
{
emergencymobile=Integer.parseInt(findViewById(R.id.txtEmergencyMobilePhone).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String emergencyemail;
if ((findViewById(R.id.txtEmergencyEmail).toString())!="")
{
emergencyemail=(findViewById(R.id.txtEmergencyEmail).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String medicaldetails;
if ((findViewById(R.id.txtMedicalDetails).toString())!="")
{
medicaldetails=(findViewById(R.id.txtMedicalDetails).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String allergies;
if ((findViewById(R.id.txtAllergies).toString())!="")
{
allergies=(findViewById(R.id.txtAllergies).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String lasttetanus;
if ((findViewById(R.id.txtLastTetanus).toString())!="")
{
lasttetanus=(findViewById(R.id.txtLastTetanus).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
int swimmingability;
String swimmingString=(findViewById(R.id.listSwimmingAbility).toString());
if (swimmingString=="Unable to swim")
{
swimmingability=0;
}
else if (swimmingString=="Fairly confident")
{
swimmingability=1;
}
else if (swimmingString=="Very confident")
{
swimmingability=2;
}
else
{
lblError.setText("Error - an unknown error has occurred. Please try again.");
return;
}
String school;
if ((findViewById(R.id.txtSchool).toString())!="")
{
school=(findViewById(R.id.txtSchool).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
boolean photos;
int photosAllowed=photoGroup.getCheckedRadioButtonId();
if (photosAllowed==0)
{
photos=true; //True means male
}
else if (photosAllowed==1)
{
photos=false;
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String moveup;
if ((findViewById(R.id.txtMoveUp).toString())!="")
{
moveup=(findViewById(R.id.txtMoveUp).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
scoutDetails Scout=new scoutDetails(id, firstname, lastname, dob, section, sex, address1, address2, city, postcode, religion, emergencyname, emergencyhome, emergencymobile, emergencyemail, medicaldetails, allergies, lasttetanus, swimmingability, school, photos, moveup);
db.createScout(Scout);
backToScoutMenu(v);
}
}
更新
有人告诉我,我应该在问题中插入我的日志跟踪——如下所示。我不得不删除其他代码来为它腾出空间-如果有人仍然需要它,请告诉我
更新#2
同样,我已经从以前的更新中删除了一些内容,所以我不会超过字符限制
IDE告诉我导致崩溃的问题与以下行有关:
lblError.setText("Error - please fill all necessary fields");
我将在下面附上此屏幕的完整Java代码,以便在上下文中查看
我看不出这条线路有什么问题,有人能帮忙吗
非常感谢
package com.example.atomi.scoutmanagerprototype;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class frmAddAScout extends AppCompatActivity {
RadioGroup genderGroup;
RadioGroup photoGroup;
TextView lblError;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_frm_add_ascout);
genderGroup=findViewById(R.id.grpGender);
photoGroup=findViewById(R.id.grpPhotos);
//Creating options for the section spinner & populating it
List<String> sectionArray=new ArrayList<String>();
sectionArray.add("Beavers");
sectionArray.add("Cubs");
sectionArray.add("Scouts");
sectionArray.add("Explorers");
sectionArray.add("Network");
sectionArray.add("Leaders");
ArrayAdapter<String> sectionAdapter=new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_dropdown_item, sectionArray
);
sectionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner sectionItems=(Spinner) findViewById(R.id.spinSection);
sectionItems.setAdapter(sectionAdapter);
//creating options for the swimming spinner & populating it
List<String> swimmingArray=new ArrayList<String>();
swimmingArray.add("Unable to swim");
swimmingArray.add("Fairly confident");
swimmingArray.add("Very confident");
ArrayAdapter<String> swimmingAdapter=new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_dropdown_item, swimmingArray
);
swimmingAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner swimmingItems=(Spinner) findViewById(R.id.spinSwimming);
swimmingItems.setAdapter(swimmingAdapter);
}
public void backToScoutMenu(View view)
{
Intent goBack = new Intent(frmAddAScout.this, frmScoutsMenu.class);
startActivity(goBack);
}
public void saveScout(View v)
{
databaseHandler db;
db=new databaseHandler(getApplicationContext());
//To do: Import all IDs created thus far & check against them to ensure it's unique here
int id = (int)(Math.random()*(9999)+1);
String firstname;
if ((findViewById(R.id.txtForename).toString())!="")
{
firstname=(findViewById(R.id.txtForename).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String lastname;
if ((findViewById(R.id.txtSurname).toString())!="")
{
lastname=(findViewById(R.id.txtSurname).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String dob;
if ((findViewById(R.id.txtDateOfBirth).toString())!="")
{
dob=(findViewById(R.id.txtDateOfBirth).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
Spinner grabSection=findViewById(R.id.spinSection);
String section=(grabSection.getSelectedItem().toString());
boolean sex;
int genderselected=genderGroup.getCheckedRadioButtonId();
if (genderselected==1)
{
sex=true; //True means male
}
else if (genderselected==0)
{
sex=false;
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String address1;
if ((findViewById(R.id.txtAddress1).toString())!="")
{
address1=(findViewById(R.id.txtAddress1).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String address2;
if ((findViewById(R.id.txtAddress2).toString())!="")
{
address2=(findViewById(R.id.txtAddress2).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String city;
if ((findViewById(R.id.txtCity).toString())!="")
{
city=(findViewById(R.id.txtCity).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String postcode;
if ((findViewById(R.id.txtPostCode).toString())!="")
{
postcode=(findViewById(R.id.txtPostCode).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String religion;
if ((findViewById(R.id.txtReligion).toString())!="")
{
religion=(findViewById(R.id.txtReligion).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String emergencyname;
if ((findViewById(R.id.txtEmergencyContactName).toString())!="")
{
emergencyname=(findViewById(R.id.txtEmergencyContactName).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
int emergencyhome;
if ((findViewById(R.id.txtEmergencyHomePhone).toString())!="")
{
emergencyhome=Integer.parseInt((findViewById(R.id.txtEmergencyHomePhone)).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
int emergencymobile;
if ((findViewById(R.id.txtEmergencyMobilePhone).toString())!="")
{
emergencymobile=Integer.parseInt(findViewById(R.id.txtEmergencyMobilePhone).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String emergencyemail;
if ((findViewById(R.id.txtEmergencyEmail).toString())!="")
{
emergencyemail=(findViewById(R.id.txtEmergencyEmail).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String medicaldetails;
if ((findViewById(R.id.txtMedicalDetails).toString())!="")
{
medicaldetails=(findViewById(R.id.txtMedicalDetails).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String allergies;
if ((findViewById(R.id.txtAllergies).toString())!="")
{
allergies=(findViewById(R.id.txtAllergies).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String lasttetanus;
if ((findViewById(R.id.txtLastTetanus).toString())!="")
{
lasttetanus=(findViewById(R.id.txtLastTetanus).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
int swimmingability;
String swimmingString=(findViewById(R.id.listSwimmingAbility).toString());
if (swimmingString=="Unable to swim")
{
swimmingability=0;
}
else if (swimmingString=="Fairly confident")
{
swimmingability=1;
}
else if (swimmingString=="Very confident")
{
swimmingability=2;
}
else
{
lblError.setText("Error - an unknown error has occurred. Please try again.");
return;
}
String school;
if ((findViewById(R.id.txtSchool).toString())!="")
{
school=(findViewById(R.id.txtSchool).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
boolean photos;
int photosAllowed=photoGroup.getCheckedRadioButtonId();
if (photosAllowed==0)
{
photos=true; //True means male
}
else if (photosAllowed==1)
{
photos=false;
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
String moveup;
if ((findViewById(R.id.txtMoveUp).toString())!="")
{
moveup=(findViewById(R.id.txtMoveUp).toString());
}
else
{
lblError.setText("Error - please fill all necessary fields");
return;
}
scoutDetails Scout=new scoutDetails(id, firstname, lastname, dob, section, sex, address1, address2, city, postcode, religion, emergencyname, emergencyhome, emergencymobile, emergencyemail, medicaldetails, allergies, lasttetanus, swimmingability, school, photos, moveup);
db.createScout(Scout);
backToScoutMenu(v);
}
}
package com.example.atomi.ScoutManager原型;
导入android.content.Intent;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.RadioGroup;
导入android.widget.Spinner;
导入android.widget.TextView;
导入java.util.ArrayList;
导入java.util.List;
公共类frmAddAScout扩展AppCompative活动{
放射组性别组;
放射组光组;
文本视图lblError;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u frm\u add\u ascout);
genderGroup=findViewById(R.id.grpGender);
照片组=findViewById(R.id.grpPhotos);
//创建节微调器的选项并填充它
List sectionArray=new ArrayList();
节数组。添加(“海狸”);
sectionArray.add(“Cubs”);
添加(“侦察兵”);
sectionArray.添加(“探索者”);
添加(“网络”);
sectionArray.添加(“领导者”);
ArrayAdapter sectionAdapter=新的ArrayAdapter(
这是android.R.layout.simple\u微调器\u下拉菜单\u项,sectionArray
);
sectionAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
微调器节项=(微调器)findViewById(R.id.spinSection);
sectionItems.setAdapter(sectionAdapter);
//创建游泳微调器的选项并填充它
列表swimmingArray=newArrayList();
游泳阵列。添加(“无法游泳”);
swimmingaray.add(“相当自信”);
swimmingaray.add(“非常自信”);
ArrayAdapter swimmingAdapter=新的ArrayAdapter(
这个,android.R.layout.simple\u微调器\u下拉菜单\u项,swimmingArray
);
swimmingAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
微调器swimmingItems=(微调器)findViewById(R.id.SpinSwimmingItems);
swimmingItems.setAdapter(swimmingAdapter);
}
public void backToScoutMenu(视图)
{
Intent goBack=新的Intent(frmAddAScout.this,frmscoutmenu.class);
星触觉;
}
公共空间(视图五)
{
数据库处理程序数据库;
db=新的databaseHandler(getApplicationContext());
//要做的事情:导入到目前为止创建的所有ID并对照它们进行检查,以确保它在这里是唯一的
int id=(int)(Math.random()*(9999)+1);
字符串名;
if((findViewById(R.id.txtForename.toString())!=“”)
{
firstname=(findviewbyd(R.id.txtForename.toString());
}
其他的
{
lblError.setText(“错误-请填写所有必要字段”);
返回;
}
字符串lastname;
if((findViewById(R.id.txtNames).toString())!=“”)
{
lastname=(findviewbyd(R.id.txtnamname.toString());
}
其他的
{
lblError.setText(“错误-请填写所有必要字段”);
返回;
}
字符串dob;
if((findViewById(R.id.txtDateOfBirth).toString())!=“”)
{
dob=(findviewbyd(R.id.txtDateOfBirth.toString());
}
其他的
{
lblError.setText(“错误-请填写所有必要字段”);
返回;
}
Spinner grabSection=findViewById(R.id.spinSection);
字符串节=(grabSection.getSelectedItem().toString());
布尔性别;
int genderselected=genderGroup.getCheckedRadioButtonId();
如果(性别选择==1)
{
sex=true;//true表示男性
}
else if(genderselected==0)
{
性别=假;
}
其他的
{
lblError.setText(“错误-请填写所有必要字段”);
返回;
}
字符串地址1;
if((findViewById(R.id.txtAddress1.toString())!=“”)
{
address1=(findViewById(R.id.txtAddress1.toString());
}
其他的
{
lblError.setText(“错误-请填写所有必要字段”);
返回;
}
字符串地址2;
if((findViewById(R.id.txtAddress2.toString())!=“”