0

我想安装我的应用程序,其中包含注册表单,其用户名和密码存储在 sqlite 数据库中。在 copyiny .apk 文件之后,我的应用程序不包含任何用于该工作的数据库表。所以我的问题是如何在我安装在 android 设备上的应用程序中导入这个数据库,它在模拟器上运行良好。

4

2 回答 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); 

我的感觉是username1null 因为它没有在您的布局 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 回答