我想安装我的应用程序,其中包含注册表单,其用户名和密码存储在 sqlite 数据库中。在 copyiny .apk 文件之后,我的应用程序不包含任何用于该工作的数据库表。所以我的问题是如何在我安装在 android 设备上的应用程序中导入这个数据库,它在模拟器上运行良好。
问问题
858 次
2 回答
2
你有没有初始化数据库类对象
EditDatabase db=new EditDatabase(this);
onCreate 或 onResume 活动?如果没有,则初始化它。
于 2013-04-12T06:58:10.973 回答
1
从 logcat 输出更新
根据 logcat 输出,它表明这是一个未处理的异常。即它发生在方法try{} ... catch{}
块之外onClick(View)
。
这意味着这是以下两行之一的问题:
unname = username1.getText().toString();
storePassword1 = db.getdata(unname);
我的感觉是username1
null 因为它没有在您的布局 XML 文件中引用。
以下是您应该如何检查 - 用这些空检查替换这两行:
if (unname != null)
{
unname = username1.getText().toString();
}
else
{
Log.d("MyTag", "unname is null");
}
if (storePassword1 != null)
{
storePassword1 = db.getdata(unname);
}
else
{
Log.d("MyTag", "storePassword1 is null");
}
if (unname == null || storePassword1 == null)
{
return;
}
再次运行代码,再次检查 logcat 输出,看看它是否告诉您问题所在。
也尽量不要使用System.out(String)
- 而是使用Log.d(String, String)
方法。这些在 Android 上更有用。
原来的
首先,请提供堆栈跟踪 - 它会显示空指针错误发生的位置。
对于 Android,最有用的方法是使用adb logcat
终端命令。这会将您的 Android 设备/模拟器的内部日志输出到屏幕上,以便您查看出了什么问题。
在您的catch{}
块中,我将输入以下行:
Log.d("MyTag", "Stack Trace of exception...", e);
这会将文本和有关错误的信息输出e
到此日志 - 我认为它将包括堆栈跟踪。
复制以“MyTag”开头的行并将它们粘贴到您的问题中。
其次,在没有堆栈跟踪的情况下,确认这 3 个变量通常不是null
:
- 用户名1
- D b
- 密码(如果应用程序确实崩溃了,
NullPointerException
那么这个不是问题,因为异常将由catch{}
块处理)
即确认您在单击事件之前已将它们全部初始化。
于 2013-04-12T08:16:24.337 回答