在活动之间切换时,android中的游标会发生什么?

时间:2015-10-07 12:53:24

标签: android sqlite cursor

我有一个活动,其中有一个包含数据库内容的列表。当我点击列表中的某些内容时,它会启动一个子活动,在该活动中显示该元素的文本。

当这只使用一个表时,我可以毫无问题地回到父表。现在我想在两个不同的表之间选择一个菜单来填充ListView。它运行正常并使用正确的表选择/填充ListView,但是当我转到新活动并尝试返回主活动时它会崩溃。

代码中唯一的区别是if / else,当你第一次去那里时它会正确加载,它只会将问题带回活动。

也许这是一个新问题,但可能是什么问题?我已经花了几个小时没有找到解决方案。我认为它可以是游标的东西,因为这是我不太了解的部分。

logcat错误是:   java.lang.RuntimeException:无法启动活动ComponentInfo {eu.aeroex.aeroexlib / eu.aeroex.aeroexlib.DBDisplay}:java.lang.NullPointerException:尝试调用虚方法' boolean java.lang。 String.equals(java.lang.Object中)'在空对象引用上

同样,这只发生在从子活动回来时,在创建它时没有问题,如果我采取" if"并且只使用一个表选项。

if (pick.equals("0"))
    CustomListViewValuesArr = myDbHelper.getPart66(cursor);

    else
        CustomListViewValuesArr = myDbHelper.getPart147(cursor);

我似乎已经确定了问题所在。当我宣布

String pick = pickMenu.getStringExtra("position");

要知道选择了哪个菜单,当您来自儿童活动时,它无法正常工作。我怎么还能传递这些信息?

1 个答案:

答案 0 :(得分:1)

问题应该是“在它与其他活动之间转换时,原始活动会发生什么”。

答案:如果留下子活动并且程序流返回到原始活动,它可能会被破坏并被重新创建。

去除并重新创建意味着活动的所有成员变量(包括您的游标成员)都会丢失其内容(或者将具有空值)

有关详细信息,请参阅https://developer.android.com/training/basics/activity-lifecycle/index.html