【问题标题】:Passing data from SQLite database using Intent使用 Intent 从 SQLite 数据库传递数据
【发布时间】:2013-01-13 00:16:03
【问题描述】:

在我的应用程序中,我有一个 SQLite 数据库,我想知道如何将一些数据(例如 id、title 等)传输到另一个活动。

这是我目前的代码:

ListView lv = getListView();

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() 
{
    public void onItemClick(AdapterView<?> av, View v, int pos, long id) 
    {
        onListItemClick(v,pos,id);
    }
    protected void onListItemClick(View v, int pos, long id) 
    {
        Intent i = new Intent(context, Table.class);
        i.putExtra("Value1", c.getString(c.getColumnIndex("title")));
        startActivity(i); 

    }
});

但我遇到了错误。

01-29 12:25:46.511: E/AndroidRuntime(26478): FATAL EXCEPTION: main
01-29 12:25:46.511: E/AndroidRuntime(26478): android.database.CursorIndexOutOfBoundsException: Index 50 requested, with a size of 50
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at com.example.studentdatabase.MainActivity$2.onListItemClick(MainActivity.java:90)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at com.example.studentdatabase.MainActivity$2.onItemClick(MainActivity.java:87)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.widget.ListView.performItemClick(ListView.java:3513)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.os.Handler.handleCallback(Handler.java:587)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.os.Handler.dispatchMessage(Handler.java:92)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.os.Looper.loop(Looper.java:123)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.app.ActivityThread.main(ActivityThread.java:3683)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at java.lang.reflect.Method.invokeNative(Native Method)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at java.lang.reflect.Method.invoke(Method.java:507)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at dalvik.system.NativeStart.main(Native Method)

请帮忙, 谢谢。

【问题讨论】:

  • 您遇到什么类型的错误?
  • 能发详细的日志猫吗?
  • 在 Eclipse 窗口中 -> 显示视图 -> logcat。并复制标记为错误的行(我的意思是红色)并发布
  • 请发布整个课程,仅凭这段代码很难看出发生了什么。
  • 我认为与数据库有关的错误(您的光标超出了记录的末尾),您可以发布您的完整代码吗?

标签: android database sqlite listview android-intent


【解决方案1】:

您输入的代码不是这里的问题。这是你的光标指向的地方。在您的游标声明之后,您应该调用 moveToFirst()。

cursor.moveToFirst()

【讨论】:

  • 那么您需要向我们展示更多代码。最好是onListItemClick()里面的代码MainActivity
【解决方案2】:

你必须指向光标上的位置

cursor.moveToFirst()

还尝试验证游标中的数据以避免进一步的异常。见this

【讨论】:

    猜你喜欢
    • 2011-03-18
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多