【发布时间】:2019-04-20 07:36:17
【问题描述】:
这是我的错误:
`E/AndroidRuntime: 致命异常: AsyncTask #2 进程:com.example.yasht.recyclerviewrss,PID:4097 java.lang.RuntimeException:执行doInBackground()时出错
at android.os.AsyncTask$3.done(AsyncTask.java:325)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.lang.StringIndexOutOfBoundsException: length=225; regionStart=4; regionLength=-2
at java.lang.String.substring(String.java:1931)
at com.example.yasht.recyclerviewrss.m_Rss.RssParser.parseRSS(RssParser.java:107)
at com.example.yasht.recyclerviewrss.m_Rss.RssParser.doInBackground(RssParser.java:47)
at com.example.yasht.recyclerviewrss.m_Rss.RssParser.doInBackground(RssParser.java:21)`
我发生错误的来源:
case XmlPullParser.END_TAG:
if(!isSiteMeta)
{
if(tagName.equalsIgnoreCase("title"))
{
article.setTitle(tagValue);
}else if(tagName.equalsIgnoreCase("description"))
{
String desc=tagValue;
//EXTRACT IMAGE FROM DESC
// error in this line =>
String
imageUrl=desc.substring(desc.indexOf("src=")+5,desc.indexOf("jpg")+3);
article.setImageurl(imageUrl);`
【问题讨论】:
-
为什么不把xml解析成一个对象呢?如果你只是想这样做,那么在我做一个子字符串之前我会检查一些事情。 if (desc.indexOf("src=") > 0 && desc.indexOf("jpg") > desc indexOf("src") + 5)....等
标签: java android android-studio substring