2011-06-06 12 views
9

खारिज मैं एक स्थिति है जहाँ मैं छवियों का एक गुच्छा लोड हो रहा हूँ है। इस प्रक्रिया के दौरान, जब तक छवियों को पूरी तरह से लोड नहीं किया जाता है, तब तक मैं एक प्रगति संवाद दिखाने की कोशिश कर रहा हूं। मैं overridedonBackPressed() तरीके में, ऐसा है जो उपयोगकर्ता द्वारा वापस बटन दबाता है, गतिविधि समाप्त कर दिया जाएगा।प्रगति संवाद

लेकिन अगर मैं वापस बटन पर प्रगति संवाद प्रदर्शित की जा रही दबाते हैं, तो वापस महत्वपूर्ण घटना नहीं बुलाया गया था। इसलिए मैंने progressDialog.setCancelable(true) प्रदान करने का प्रयास किया। तो अब यह मुझे प्रगति संवाद को खारिज करने की इजाजत देता है, लेकिन मेरी पिछली कुंजी घटना को वैसे भी नहीं कहा जा रहा है और इसलिए मेरी गतिविधि पृष्ठभूमि में छवियों को लोड करती है।

तो मैं कैसे करते हैं दोनों जब उपयोगकर्ता वापस कुंजी प्रेस progressDialog और गतिविधि बंद कर दिया जाए।

उत्तर

7

उपयोग Dialog.setOnCancelListener अपनी पृष्ठभूमि कार्य

+3

अधिक विशिष्ट अगली बार होने के लिए प्रयास करें। –

+1

@ मारविन लैब्स: इसका उपयोग कैसे करें ?? – Deepzz

1

उपयोग OnKeyDown() विधि को रद्द करने, हालांकि आप की जाँच करने के संवाद दिखाया जा रहा है, चाहे बटन दबाया जा रहा है 'वापस' बटन है कि क्या होगा, और आप भी ऐसा करना चाहिए यह सुनिश्चित करने के लिए कि डिफ़ॉल्ट विधि भी निष्पादित की गई है, super.onKownDown() को कॉल करें।

public boolean onKeyDown(int keyCode, KeyEvent event) 

{ 

if (keyCode == KeyEvent.KEYCODE_BACK && progressDialog.isShowing()) 
{ 
    // DO WHATEVER YOU WANT 
} 

// Call super code so we dont limit default interaction 
super.onKeyDown(keyCode, event); 

return true; 
} 

क्या आप सही उत्तर के लिए कोड पेस्ट कर सकते हैं?

+0

मैंने यह भी कोशिश की। यह काम नहीं किया। –

+0

आपका उत्तर कहां है? क्या आप पृष्ठभूमि सेवा को रोकने में सक्षम हैं? –

7

ठीक है। मुझे आखिरकार एक समाधान मिला है।

progressDialog.setCancelable(true); 
    progressDialog.setOnCancelListener(new OnCancelListener() { 

     public void onCancel(DialogInterface dialog) { 

     Log.i("inside on cancel","Cancel Called"); 
     finish(); //If you want to finish the activity. 
     } 
    }); 
+1

धन्यवाद इससे मुझे भी मदद मिली :) – UMAR

+1

धन्यवाद यह मेरी मदद करता है .... – ADT

3

अपनी छवियों को एक अलग थ्रेड में लोड करें। जब उपयोगकर्ता इंगित करता है कि वे लोड को रद्द करना चाहते हैं, तो लोडिंग थ्रेड के प्रोसेसिंग लूप में चेक किए गए ध्वज को सेट करें। आप उन मामलों को संभालने के लिए लोडिंग थ्रेड की इंटरप्ट() विधि को भी कॉल कर सकते हैं जहां थ्रेड प्रतीक्षा() या नींद() या कुछ में फंस गया है।

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