我有一个多活动应用程序,它使用SQLite DB并按设计工作。但是,我正在添加一个功能,现在无法写回数据库
为了保持简单,我将重点关注2个活动/类(Activity1和Activity2)和DBHelper类,我将使用伪代码。
定义了类:
public class Activity 1 extends Activity implements OnClickListener
public class Activity 2 extends Activity implements OnClickListener
public class DBHelper extends SQLiteOpenHelper
活动1使用DBHelper在两个不同的场合从两个不同的表中读取DB中的数据而没有任何问题。然后关闭数据库。
A1读取并显示一些数据(以及其他一些内容)然后将从DB读取的数据传递给活动2.
正如我所说,A2对数据执行了一些魔术......没有问题。当我尝试从活动2中打开数据库时,事情就转向了。
我在DBHelper类中写了一个新方法:
我们将调用DBwriter()来保持简单,但是当我调用DBwriter()FROM A2时它会崩溃(NullPointerException)。
然而,当我通过调试器步进时,我可以看到它永远不会到达方法DBwriter()。在调用DBwriter()的行上,它会爆炸并在地板上留下一团糟。
在我的头上刮了一会儿(然后将所有的1和0扫地出去)之后,我编辑了A1并打电话给DBwriter()
并且它不会崩溃。它通过这种方法走了一步。所以,DBwriter()没有问题。
我编辑了DBwriter() - 记得它位于DBHelper类中 - 并删除了一切,但裸骨。像这样:
public void DBwriter ()
{ int Debug = 1; // this is so I can place a Break Point
}
然而,在A2中,当CALLING DBwriter()并且甚至没有到达代码的第一行时它仍然会崩溃!!
我怀疑它与扩展SQLiteOpenHelper
有关在A1中,有一个变量:private DBHelper m_myDbHelper
现在......当我在第二个Activity中的SEPARATE类中创建变量的第二个实例时,A2 ...这会导致某些事情爆炸,因为我正在使用DBHelper两次吗?我可以创建一个新的写作类,但我认为它应该来自ONE DBHelper Class。
我在构造函数或onCreate
中没有做任何WEIRD这是构造函数:
public DBHelper (Context context) {
super (context, DB_NAME, null, 1);
this.myContext = context;
}
这是onCreate:
@Override
public void onCreate (SQLiteDatabase db) {
}