2012-04-23 125 views
6

मैं एक ProgressDialog इस तरह लागू किया है:मेरा प्रोग्रेसडिअलॉग बैकबटन के बदले किसी भी कुंजी (स्पर्श) पर क्यों खारिज कर रहा है?

// show progress dialog while date is loading 
     progressDialog = ProgressDialog.show(XYActivity.this, getResources().getString(R.string.progress_dialog_please_wait), getResources().getString(R.string.progress_dialog_loading), true); 
     progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { 
      @Override 
      public void onCancel(DialogInterface dialog) { 
       cancel(true); 
       Log.w(LOGTAG, "loading cancelled via back button"); 
      } 

     }); 
     progressDialog.setCancelable(true); 

यह ProgressDialog एक AsyncTask (PreExecute) के अंदर कार्यान्वित किया जाता है, तो रद्द (सही) विधि AsyncTask बंद हो जाता है। यह सब ठीक काम करता है।

समस्या, है कि मैं ProgressDialog रद्द कर सकते हैं मेरी स्क्रीन पर किसी भी यादृच्छिक स्पर्श साथ। मैं केवल बैकबटन दबाकर संवाद को खारिज करना चाहता हूं। कृपया मेरी मदद करें! आप लोगों को धन्यवाद।

उत्तर

7

यह मेरे लिए काम किया:

@Override 
protected void onPreExecute() { 
    progressDialog = ProgressDialog.show(context, "Title", "Loading...", true, true, new OnCancelListener() { 
     @Override 
     public void onCancel(DialogInterface dialog) { 
      cancel(true); 
     } 
    }); 
    progressDialog.setCanceledOnTouchOutside(false); 
} 

setCanceledOnTouchOutside GedankenNebel ने सुझाव दिया सुंदर साफ है।

1

अनुदेश

यकीन है कि पूरे के बारे में नहीं नीचे कोशिश बटन को रद्द ... मैं onCancel() विधि ठीक ढंग से सक्रिय नहीं की खबरों में सुना है। मेरे समाधान में जब भी बटन दबाया जाता है तो वापस आने के लिए कॉल के साथ संवाद पर एक सामान्य बटन बनाना होता है।

private void createCancelProgressDialog(String title, String message, String buttonText) 
{ 
    cancelDialog = new ProgressDialog(this); 
    cancelDialog.setTitle(title); 
    cancelDialog.setMessage(message); 
    cancelDialog.setButton(buttonText, new DialogInterface.OnClickListener() 
    { 
     public void onClick(DialogInterface dialog, int which) 
     { 
      // Use either finish() or return() to either close the activity or just the dialog 
      cancelDialog.dismiss(); 
     } 
    }); 
    cancelDialog.show(); 
} 

तो केवल आपकी गतिविधि

createCancelProgressDialog("Loading", "Please wait while activity is loading", "Cancel"); 

बल्कि सरल समाधान में कहीं से एक साधारण कॉल विधि का उपयोग करें, लेकिन यह काम कर देता है;) भी बस ध्यान दें कि cancelDialog एक गतिविधि है चर पोंछ, अगर आपको इसे कहीं और से कॉल करने की आवश्यकता नहीं है, तो आप उस विधि में चर के दायरे को सीमित करने में सक्षम होना चाहिए।

+0

धन्यवाद, रद्द करने के बाद 'रद्द करें। सेटकैनेबल (झूठा);' आपके कोड के लिए यह मेरे लिए काम करता है, लेकिन मुझे एक आसान समाधान मिला है नीचे – GedankenNebel

+15

मुझे 'progressDialog.setCanceledOnTouchOutside (false) के साथ समाधान मिला; '))) – GedankenNebel

+1

ठीक है ..! किसी भी तरह से आपकी समस्या हल हो गई थी ...! धन्यवाद..! – Dinesh

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

  • कोई संबंधित समस्या नहीं^_^