Sqlite 在菜单上调用startActivity函数会使应用程序崩溃

Sqlite 在菜单上调用startActivity函数会使应用程序崩溃,sqlite,android-studio,android-activity,Sqlite,Android Studio,Android Activity,我正在设置一个项目,该项目将接收用户的详细信息,将其插入SQLite数据库,并在第二个活动的ListView上显示用户提供的信息 我在互联网上尝试了很多教程和建议,尝试了ActivityForResult,尝试了不使用Switch,但仍然没有任何效果 public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.SecondActivity:

我正在设置一个项目,该项目将接收用户的详细信息,将其插入SQLite数据库,并在第二个活动的ListView上显示用户提供的信息

我在互联网上尝试了很多教程和建议,尝试了ActivityForResult,尝试了不使用Switch,但仍然没有任何效果

public boolean onOptionsItemSelected(MenuItem item) {


    switch (item.getItemId()) {
        case R.id.SecondActivity:
            Intent i = new Intent(this, SecondActivity.class);
            startActivity(i);
            break;
        case R.id.credits:
            Toast.makeText(MainActivity.this,
                    "some text ;)", Toast.LENGTH_LONG).show();
            break;
    }

    return true;

}
我希望它能运行第二个活动。但当我尝试在活动之间切换时,它总是崩溃

 case R.id.SecondActivity:
            Intent i = new Intent(this, SecondActivity.class);
            startActivity(i);
            break;
如果AndroidManifest.xml中存在或不存在第二个活动性检查,则可能会出现问题

如果不是片段,则在意图调用中使用intent i=newintent(getApplicationContext(),SecondActivity.class)

在您的第24行:

Cursor getUserData=db.query(HelperDB.TABLE_USER,null,null,null,null,null,null);
但是,此时(在初始化
SecondActivity
期间),变量
db
已声明(第21行),但未赋值(在第33行的
onCreate()
中赋值太晚了)。请注意,类的
远远早于调用此
onCreate()


因此,将这两个
光标移动到第33行之后(可能在第33行和第34行之间)将解决此问题。

请添加此崩溃的日志。您是否在
AndroidManifest.xml
中添加了
SecondActivity
?抱歉,我不知道如何操作。是的,它位于
src/main/AndroidManifest.xml
中的.xml文件中,您是否添加了类似的内容,例如,以
@aslox开头,您所说的“无法解决问题”是什么意思?stacktrace(中的第35行到第59行)是否仍然相同?我猜新的问题是由过早的
db.close()
生成的。我尝试将第24,25行移动到34,35行(在onCreate函数中),但这些行不起作用。观察新运行数据:@asslox Yes,读取新运行数据中的第110行和第115行,您应该删除
db.close()
行,或者将其放在最底部,例如在
onCreate()
块的末尾。