2012-05-22 12 views
6

मैंने यहां पर समान धागे पढ़े हैं, यहां तक ​​कि googled लेकिन कोई समाधान नहीं है।एंड्रॉइड/जावा: ऑन प्रोग्रेसअपडेट() को नहीं कहा जा रहा है?

ऑन प्रोग्रेसअपडेट() को अभी नहीं कहा जा रहा है।

कोड यह रहा:

public class DoHardWork extends AsyncTask { 

    @Override 
    protected Object doInBackground(Object... params) { 


     publishProgress("Requesting XML data"); 
     this.requestData(); 

     publishProgress("Returning results"); 
     this.returnResults(); 

     return null; 
    } 



    protected void onProgressUpdate(String text) { 
     super.onProgressUpdate(text); 
     MainActivity.setLog(text); 
    } 
} 

मैं onProgressUpdate() में एक ब्रेकपाइंट स्थापित करने की कोशिश की और यह कभी नहीं कहा जाता है। ऐसा लगता है कि कोड सिर्फ अनदेखा किया गया है।

किसी को भी ऐसी ही समस्या थी और यह सिर्फ उसके साथ गड़बड़ कर ग्रहण करने के लिए निकला, लेकिन मैंने इसे सफलतापूर्वक पुन: प्रारंभ करने का प्रयास किया।

कोई विचार?

उत्तर

11

मुझे लगता है कि आप अपने कोड पर कुछ याद कर चुके हैं। इस के साथ प्रयास करें:

private class DoHardWork extends AsyncTask<Void, String, Long> { 
    protected Long doInBackground(Void... urls) { 
     publishProgress("Requesting XML data"); 
     this.requestData(); 

     publishProgress("Returning results"); 
     this.returnResults(); 

     return null; 
    } 

    protected void onProgressUpdate(String... progress) { 
     super.onProgressUpdate(progress); 
     MainActivity.setLog(progress[0]); 
    } 


} 
+0

ऐसा हुआ! मैं जावा के लिए नया हूं इसलिए मैंने इसे यथासंभव सरल रखने की कोशिश की, मुझे नहीं पता था कि जेनेरिक की आवश्यकता थी। एक और सवाल हालांकि, मैं प्रकाशित प्रगति() को रद्द नहीं कर सकता()? ऐसा लगता है कि यह संभव होना चाहिए। – qwerty

+0

आप प्रकाशित प्रोग्रेस() को कॉल कर सकते हैं लेकिन जेनेरिक के दूसरे मूल्य पर आपको शून्य डालना होगा, इस तरह: DoHardWork AsyncTask <शून्य, शून्य, लंबा> बढ़ाता है। इस लिंक पर एक नज़र डालें http://developer.android.com/reference/android/os/AsyncTask.html – Pablo

+2

इससे भी बेहतर, अपनी विधि घोषणा पर @ ओवरराइड जोड़ें, आपको यह अनुमान लगाने की आवश्यकता नहीं होगी कि आपने यह सही किया है या नहीं, कंपाइलर आपके लिए यह करेगा। –

संबंधित मुद्दे