Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio应用程序在尝试将记录插入数据库时崩溃,错误消息不';没有道理_Java_Android_Database_Sqlite_Android Studio - Fatal编程技术网

Java Android Studio应用程序在尝试将记录插入数据库时崩溃,错误消息不';没有道理

Java Android Studio应用程序在尝试将记录插入数据库时崩溃,错误消息不';没有道理,java,android,database,sqlite,android-studio,Java,Android,Database,Sqlite,Android Studio,我正在为我的a级控制评估项目工作。在上下文中,我正在创建一个应用程序来管理一个Scout组,目前我正在允许用户创建一个包含Scout详细信息的记录,并将其插入数据库。这是我基于数据库创建的第一个项目,我以前从未使用过Android Studio、XML或Java,也没有人教过我——这一切都是我自己完成的。 由于这个原因,我遇到了不少麻烦。我在将记录插入数据库时遇到了问题——我已经学习了几个不同的教程,但它似乎仍然不起作用。IDE本身没有给我一个错误,但是当我在运行我的应用程序的设备上单击“保存”

我正在为我的a级控制评估项目工作。在上下文中,我正在创建一个应用程序来管理一个Scout组,目前我正在允许用户创建一个包含Scout详细信息的记录,并将其插入数据库。这是我基于数据库创建的第一个项目,我以前从未使用过Android Studio、XML或Java,也没有人教过我——这一切都是我自己完成的。
由于这个原因,我遇到了不少麻烦。我在将记录插入数据库时遇到了问题——我已经学习了几个不同的教程,但它似乎仍然不起作用。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())!=“”