2015-11-03 13 views
6

अद्यतन नहीं कर रहा है मेरे पास यह वर्ग है जिसे खंड से बुलाया जाता है। प्रगति पर अद्यतन कहा जाता है लेकिन संदेश अपडेट नहीं होगा। मुझे कोई प्रगति पट्टी या स्पिनर भी नहीं दिख रहा है। सिर्फ शीर्षक और संदेश में, कुछ समान समस्याएं देखी गईं लेकिन कुछ भी नहीं जहां प्रगति पट्टी बिल्कुल दिखाई नहीं दे रही है। साथ ही, मेरा संदेश प्रोग्रेसअपडेट पर बिल्कुल अपडेट नहीं होगा लेकिन मानों को प्रिंट करने से पता चलता है कि यह ऑन प्रोग्रेसअपडेट के अंदर बढ़ता है।प्रगति संवाद दिखाता है लेकिन कोई प्रगति बार शो नहीं दिखाता है और संदेश

संपादित करें: यहाँ कैसे मैं काम

DownloadFilesTask download = new DownloadFilesTask(); 
download.execute(urls.toArray(new String[urls.size()])); 

यहाँ वर्ग

private class DownloadFilesTask extends AsyncTask<String, Integer, Long> { 

ProgressDialog progressDialog; 

@Override 
protected void onPreExecute() 
{ 
    progressDialog = ProgressDialog.show(getActivity(), "Downloading","Downloaded 0/"+urls.size(), false); 
    progressDialog.setProgress(0); 
    progressDialog.setMax(urls.size()); 
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
} 

@Override 
protected Long doInBackground(String[] urls) { 
    int count = urls.length; 
    long totalSize = 0; 
    for (int i = 0; i < count; i++) { 
      //Do things in background here 
      publishProgress(new Integer[] {i}); 
    } 
    return totalSize; 
} 

@Override 
protected void onProgressUpdate(final Integer... progress) { 
    System.out.println(progress[0]); //This does print correctly 
    getActivity().runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      progressDialog.setProgress(progress[0]); 
      progressDialog.setMessage("Downloaded "+ progress[0] +"/"+urls.size()); 
     } 
    }); 
} 

@Override 
protected void onPostExecute(Long result) { 
    progressDialog.dismiss(); 
    Toast t = Toast.makeText(getActivity(), "Downloaded", Toast.LENGTH_LONG); 
    t.show(); 
} 

}

+1

आपने कार्य कैसे शुरू किया, कृपया कोड दिखाएं। – starkshang

+0

इसे संपादित करने के तरीके को दिखाने के लिए इसे संपादित किया गया है, यह केवल एक सामान्य तरीका है जिसे आप एक कार्य शुरू करते हैं, इसलिए मैंने इसे शामिल नहीं किया है। क्या उससे किसी भी तरह से सहायता मिलती है? – Zach

उत्तर

3

समस्या आपके प्रोग्रेसडियलॉग को शुरू करने के तरीके के साथ है।

इस के साथ अपने onPreExecute बदलें:

@Override 
protected void onPreExecute() { 
    progressDialog = new ProgressDialog(activity); 
    progressDialog.setTitle("Downloading"); 
    progressDialog.setMessage("Downloaded 0/" + urls.size()); 
    progressDialog.setIndeterminate(false); 
    progressDialog.setProgress(0); 
    progressDialog.setMax(urls.size()); 
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
    progressDialog.show(); 
} 

अनिवार्य रूप से, आप शो कॉल करने से पहले setProgressStyle कॉल करने के लिए की जरूरत है।

इसके अतिरिक्त, आप कोड onProgressUpdate में हटा सकते हैं क्योंकि onProgressUpdate UI थ्रेड पर लगाया गया है।

+0

वाह, इस तरह के एक साधारण मुद्दे के अंत में कॉल करें। बहुत बहुत धन्यवाद, जब मैं कर सकता हूं तो 22 बजे – Zach

+1

मदद करने में खुशी होगी - यह एक मुश्किल बग है। यदि आप रुचि रखते हैं, तो प्रोग्रेसडिअलॉग स्रोत पर नज़र डालें - आप देखेंगे कि आप इस समस्या में क्यों चल रहे थे। https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/ProgressDialog.java#L324 – Aaron

0

शुरू सही कारण के बारे में सुनिश्चित नहीं है, लेकिन यह setProgress की आवश्यकता नहीं है runnable पर onProgressUpdate यूआई थ्रेड पर चलाएगा।

कोशिश

progressDialog.setProgress(progress[0]); progressDialog.setMessage("Downloaded "+ progress[0] +"/"+urls.size());

इसके अलावा

साथ की जगह

getActivity().runOnUiThread(new Runnable() { @Override public void run() { progressDialog.setProgress(progress[0]); progressDialog.setMessage("Downloaded "+ progress[0] +"/"+urls.size()); } });

- आप doInbackground() में नेटवर्किंग सामान कर रहे हैं, और हम प्रगति जो onPostExecute() पर खारिज कर दिया जाएगा नहीं देख सकता।

+0

मैं वास्तव में पहले था लेकिन यह काम नहीं कर रहा था इसलिए मैंने runonuithread कोशिश करने का फैसला किया। मैं छवियों को डाउनलोड कर रहा हूं इसलिए हाँ इसमें कुछ समय लगता है। संवाद दिखाता है लेकिन इसमें शीर्षक नहीं है, केवल शीर्षक है। एक बार यह छवियों को डाउनलोड करने के बाद समाप्त हो जाता है, यह ठीक – Zach

+0

ठीक है। प्रगति संवाद को पहले शुरू करने का प्रयास करें और 'show()' को बाद में 'onPreExecute() ' – sha

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