1

我遵循了这个 RSS 阅读器教程

所以起初我在这一行遇到了一个错误:

Uri uri = Uri.parse(links.get(position));

我得到了错误,我必须将它转换为这样的字符串:

Uri uri = Uri.parse((String) links.get(position));

之后就可以运行应用程序了。但是,如果我想打开一个 ListView 元素,应用程序每次都会停止......有没有人知道出了什么问题?

这里是logcat:

11-20 19:25:19.027: E/AndroidRuntime(505): FATAL EXCEPTION: main
11-20 19:25:19.027: E/AndroidRuntime(505): java.lang.IndexOutOfBoundsException: Invalid index 2, size is 0
11-20 19:25:19.027: E/AndroidRuntime(505):  at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
11-20 19:25:19.027: E/AndroidRuntime(505):  at java.util.ArrayList.get(ArrayList.java:311)
11-20 19:25:19.027: E/AndroidRuntime(505):  at com.rss_reader.MainActivity.onListItemClick(MainActivity.java:111)
11-20 19:25:19.027: E/AndroidRuntime(505):  at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
11-20 19:25:19.027: E/AndroidRuntime(505):  at android.widget.AdapterView.performItemClick(AdapterView.java:284)
11-20 19:25:19.027: E/AndroidRuntime(505):  at android.widget.ListView.performItemClick(ListView.java:3513)
11-20 19:25:19.027: E/AndroidRuntime(505):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
11-20 19:25:19.027: E/AndroidRuntime(505):  at android.os.Handler.handleCallback(Handler.java:587)
11-20 19:25:19.027: E/AndroidRuntime(505):  at android.os.Handler.dispatchMessage(Handler.java:92)
11-20 19:25:19.027: E/AndroidRuntime(505):  at android.os.Looper.loop(Looper.java:123)
11-20 19:25:19.027: E/AndroidRuntime(505):  at android.app.ActivityThread.main(ActivityThread.java:3683)
11-20 19:25:19.027: E/AndroidRuntime(505):  at java.lang.reflect.Method.invokeNative(Native Method)
11-20 19:25:19.027: E/AndroidRuntime(505):  at java.lang.reflect.Method.invoke(Method.java:507)
11-20 19:25:19.027: E/AndroidRuntime(505):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-20 19:25:19.027: E/AndroidRuntime(505):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-20 19:25:19.027: E/AndroidRuntime(505):  at dalvik.system.NativeStart.main(Native Method)

在我阅读描述后,我认为 Uri 可能为空,因为:

如果 uriString 为空,则抛出 NullPointerException

但为什么它为空?我不知道...

编辑:教程的链接是错误的......但现在我找到了正确的。

4

2 回答 2

1

LogCat 中的重要信息是:

java.lang.IndexOutOfBoundsException: Invalid index 2, size is 0

这意味着您的links列表为,然后:

    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
    at java.util.ArrayList.get(ArrayList.java:311)
    at com.rss_reader.MainActivity.onListItemClick(MainActivity.java:111)

您可以看到您尝试在第 111 行的方法中从links(不存在的)读取值,正如您在上面所说的:onListItemClick()

Uri uri = Uri.parse((String) links.get(position));

必须在某些时候将数据添加到您的links列表links.add()中......

于 2012-11-20T19:34:11.367 回答
0

你的罪魁祸首在这里:

com.rss_reader.MainActivity.onListItemClick(MainActivity.java:111)

在 MainActivity.java 的第 111 行

编辑

那么这意味着你到达了你的数据之外,或者更准确地说

java.lang.IndexOutOfBoundsException: Invalid index 2, size is 0

links当您尝试从中获取第三个元素时,您是空的,因此 IndexOutOfBounds 异常。检查为什么links未正确初始化或进行一些其他检查以确保您position的设置适合​​环境。

于 2012-11-20T19:32:39.563 回答