بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
سوال در مورد AsyncTask(حل نشده)
سلام دوستان من یک xml رو از نت میگیرم و پارسش می کنم حالا مشکل من اینجاست که وقتی پارس xml تموم میشه با یه اینترفیس ArrayList خودم رو برمیگردنم اما داخل خود اینترفیس null pointer exception نمیده ولی خارج از اینترفیس این خطا رومیده
اینم سورس برای واضح شدن سوال
این قسمت AsyncTask
public class RssReader extends AsyncTask<String,Void , RssParser> {
public OnDownloadComplete listener=null;
Context context;
Exception exception;
@Override
protected RssParser doInBackground(String... urls) {
try {
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
SAXParser saxParser = saxParserFactory.newSAXParser();
XMLReader xmlReader = saxParser.getXMLReader();
URL url = new URL(urls[0]);
RssParser rssParser=new RssParser();
xmlReader.setContentHandler(rssParser);
xmlReader.parse(new InputSource(url.openStream()));
return rssParser;
} catch (Exception e) {
this.exception = e;
return null;
}
}
public RssReader(OnDownloadComplete listener,Context context){
this.listener = listener;
this.context=context;
}
protected void onPostExecute(RssParser feed) {
listener.downloadeComplete(feed.getItems());
}
}
اینم اینترفیس
public interface OnDownloadComplete {
void downloadeComplete(ArrayList<RssParser.Item> items);
}
حالا توی Fragment از کد استفاده می کنم
RssReader rssReader= (RssReader) new RssReader(new OnDownloadComplete() {
@Override
public void downloadeComplete(ArrayList<RssParser.Item> items) {
data=items;
//اینجا null pointer نمیده
}
},getActivity()).execute("http://khabarfarsi.com/rss/top");
//از اینجا به بعد null pointer میده
0
0
ببخشید اگه زیاد شد (10 سال پیش)
0
0
ببخشید اگه زیاد شد (10 سال پیش)
0
0
کسی نیست جواب بده (10 سال پیش)
0
0
(10 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
مرتضی
10 سال پیش
0
0
بنظر خودم یه دلیلش می تونه این باشه که AsyncTask اخر اجرا میشه حالا یه روشی دارید که AsyncTask بلافاصله بعد از oncreate یا onCreateView اجرا بشه
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .