آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

سوال در مورد AsyncTask(حل نشده)

مرتضی  10 سال پیش  10 سال پیش
0 0

سلام دوستان من یک 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 اجرا بشه


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .