2010-10-08 14 views
5

जब मेरी एंड्रॉइड गतिविधि प्रगति संवाद को पॉप अप करती है, तो जब उपयोगकर्ता बैक बटन पर क्लिक करता है तो उसे संभालने का सही तरीका क्या होता है?जब मेरे पास प्रगति संवाद होता है तो एंड्रॉइड पर 'बैक बटन' को कैसे संभालना है

धन्यवाद।

उत्तर

12

प्रोग्रेसडिअलॉग को विस्तारित करने वाली एक नई संवाद वस्तु बनाएं, फिर उसमें सार्वजनिक शून्य को बैकप्रेस() विधि को ओवरराइड करें।

+0

रद्द बटन नहीं, मैं फोन के नीचे 'बैक बटन' (भौतिक बटनों में से एक) के बारे में बात कर रहा हूं। – michael

+0

क्या आपने इसे आजमाया है? बैक बटन को रद्द ईवेंट को आग लगाना चाहिए। – AndrewKS

+0

नहीं। यह काम नहीं करता है। मैंने कैनसेल() में ब्रेकपॉइंट सेट किया है, इसे कभी नहीं कहा जाता है। – michael

6

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

उदाहरण के लिए। गतिविधि विधि के लिए:

public void onBackPressed() 
{ 
    if (progressDialog.isShowing()) 
    { 
     // DO SOMETHING 
    } 
} 

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

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_BACK && progressDialog.isShowing()) 
    { 
     // DO SOMETHING 
    } 

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

    return true; 
} 

किसी भी विधि के साथ, प्रगतिDialog चर/संपत्ति स्पष्ट रूप से गुंजाइश और सुलभ होनी चाहिए।

0

आप स्थिर कॉल का उपयोग कर सकते हैं:

public static ProgressDialog show (Context context, CharSequence title, CharSequence message, boolean indeterminate, boolean cancelable, DialogInterface.OnCancelListener cancelListener) 

बस रद्द = सच स्थापित करने के लिए और उचित cancelListener कॉलबैक जोड़ना सुनिश्चित करें।

उदाहरण:

progressDialog = ProgressDialog.show(this, "Fetching data...", "Loading ...", true, true, this); 
0
progressbar.setcancellable(false); 

यह पूरी तरह से काम करता है, मैं एक ही समस्या का सामना करना पड़ और समाधान मिल गया था।

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