मैं ProgressDialog
का उपयोग कर रहा हूं Fragment
के रूप में प्रबंधित किया गया। भले ही मैं ProgressDialog
को गैर-रद्द करने योग्य सेट करने के लिए सेट करता हूं, फिर भी बैक बटन स्टैक से Fragment
को निकालने के लिए काम करेगा। इस तरह मेरे भीतर के वर्ग देखो:एक खंड के रूप में प्रबंधित होने पर रद्द करने योग्य नहीं होने के लिए प्रगति संवाद कैसे सेट करें?
public static class ProgressDialogFragment extends DialogFragment {
private DialogStyle dialogStyle;
public static ProgressDialogFragment newInstance(String title, String message) {
ProgressDialogFragment fragment = new ProgressDialogFragment();
Bundle args = new Bundle();
args.putString("title", title);
args.putString("message", message);
fragment.setArguments(args);
return fragment;
}
public void setDialogStyle(DialogStyle dialogStyle) {
this.dialogStyle = dialogStyle;
}
@Override
public ProgressDialog onCreateDialog(Bundle savedInstanceState) {
String title = getArguments().getString("title");
String message = getArguments().getString("message");
ProgressDialog progressDialog = new ProgressDialog(getActivity());
progressDialog.setTitle(title);
progressDialog.setMessage(message);
if(dialogStyle!=null) {
switch (dialogStyle) {
case CANCELABLE:
progressDialog.setCancelable(true);
break;
case NON_CANCELABLE:
progressDialog.setCancelable(false);
break;
}
} else {
progressDialog.setCancelable(false);
}
progressDialog.show();
return progressDialog;
}
}
और फिर विधि मैं बेनकाब है:
public void showProgressDialog(String title, String message, DialogStyle dialogStyle) {
Fragment prev = fragmentManager.findFragmentByTag("progress dialog");
if(prev!=null) {
ft.remove(prev);
}
ft.addToBackStack(null);
DialogFragment newFragment = ProgressDialogFragment.newInstance(title, message);
((ProgressDialogFragment)newFragment).setDialogStyle(dialogStyle);
newFragment.show(fragmentManager, "progress dialog");
}
तो यहाँ स्पष्ट भ्रम है कि वापस बटन ProgressDialog
को हटा क्योंकि यह एक Fragment
के रूप में प्रबंधित किया जा रहा है। तो मैं इसे कैसे बना सकता हूं ताकि Dialog
रद्द करने योग्य नहीं है?
अजीब लगता है की तरह कुछ कोशिश करने के लिए:
@Override
public void onBackPressed() {
if(fragmentManager.fragmentManager.findFragmentByTag("progress dialog")!=null) {
}
}
एंड्रॉयड उपयोग कर सकते हैं कह रही है कि ProgressDialog अब और नहीं किया जाना चाहिए, तो इसके बजाय आप चाहिए लगता है "अपने लेआउट में एक ProgressBar का उपयोग करें।" Http://developer.android.com/ गाइड/विषयों/ui/dialogs.html। वे कहते हैं क्यों नहीं, लेकिन मुझे लगता है कि इंतजार के बाद असामान्य घटनाओं को संभालने की कोशिश में सभी गड़बड़ी से बचने के लिए हो सकता है (विफल सर्वर कॉल, पृष्ठभूमि कार्य से वापस आ रहा ऐप)। – Lucy