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

时间:2019-01-01 09:49:08

标签: sqlite android-studio android-activity

我正在建立一个项目,该项目将从用户处接收详细信息,将其插入SQLite数据库,并将在Second Activity的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;

}

我希望它可以运行第二个活动。但是当我尝试在活动之间进行切换时,它仍然会崩溃

2 个答案:

答案 0 :(得分:0)

 case R.id.SecondActivity:
            Intent i = new Intent(this, SecondActivity.class);
            startActivity(i);
            break;

AndroidManifest.xml中是否存在第二个能力检查中的问题

或在intent调用中(如果不是片段的话)使用Intent i = new Intent(getApplicationContext(),SecondActivity.class);

答案 1 :(得分:-1)

在您的SecondActivity中,第24行:

Cursor getUserData=db.query(HelperDB.TABLE_USER,null,null,null,null,null,null);

但是,此时(在SecondActivity初始化期间),变量db在第21行被声明(但未分配)(在以下位置被分配为时已晚): onCreate()在第33行)。请注意,类的<init>比调用此onCreate()的时间要早​​得多。

因此,将这两个Cursor移动到第33行之后(也许在第33行和第34行之间)将解决此问题。