-
Notifications
You must be signed in to change notification settings - Fork 234
/
ProgressDialogFragment.java
117 lines (91 loc) · 3.94 KB
/
ProgressDialogFragment.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package com.foxykeep.datadroidpoc.dialogs;
import com.foxykeep.datadroidpoc.R;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
public final class ProgressDialogFragment extends DialogFragment {
private static final String FRAGMENT_TAG = "com.foxykeep.datadroidpoc.dialogs.progressDialog";
private static final String BUNDLE_MESSAGE = "message";
private static final String BUNDLE_IS_CANCELABLE = "isCancelable";
private OnCancelListener mOnCancelListener;
private static ProgressDialogFragment newInstance(String message,
OnCancelListener onCancelListener, boolean isCancelable) {
ProgressDialogFragment dialogFragment = new ProgressDialogFragment();
dialogFragment.mOnCancelListener = onCancelListener;
Bundle args = new Bundle();
args.putString(BUNDLE_MESSAGE, message);
args.putBoolean(BUNDLE_IS_CANCELABLE, isCancelable);
dialogFragment.setArguments(args);
return dialogFragment;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Bundle args = getArguments();
ProgressDialog dialog = new ProgressDialog(getActivity());
dialog.setTitle(R.string.progress_dialog_title);
dialog.setMessage(args.getString(BUNDLE_MESSAGE));
dialog.setIndeterminate(true);
setCancelable(args.getBoolean(BUNDLE_IS_CANCELABLE));
return dialog;
}
@Override
public void onCancel(DialogInterface dialog) {
super.onCancel(dialog);
if (mOnCancelListener != null) {
mOnCancelListener.onCancel(dialog);
}
}
public static class ProgressDialogFragmentBuilder {
private FragmentActivity mActivity;
private String mMessage = null;
private OnCancelListener mOnCancelListener = null;
private boolean mCancelable = true;
public ProgressDialogFragmentBuilder(FragmentActivity activity) {
mActivity = activity;
}
public ProgressDialogFragmentBuilder setMessage(int resId) {
mMessage = mActivity.getString(resId);
return this;
}
public ProgressDialogFragmentBuilder setMessage(String text) {
mMessage = text;
return this;
}
public ProgressDialogFragmentBuilder setOnCancelListener(
OnCancelListener onCancelListener) {
mOnCancelListener = onCancelListener;
return this;
}
public ProgressDialogFragmentBuilder setCancelable(boolean cancelable) {
mCancelable = cancelable;
return this;
}
public void show() {
FragmentManager fragmentManager = mActivity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment prev = fragmentManager.findFragmentByTag(FRAGMENT_TAG);
if (prev != null) {
fragmentTransaction.remove(prev);
}
fragmentTransaction.addToBackStack(null);
ProgressDialogFragment.newInstance(mMessage, mOnCancelListener, mCancelable)
.show(fragmentManager, FRAGMENT_TAG);
}
}
public static void dismiss(FragmentActivity activity) {
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment prev = fragmentManager.findFragmentByTag(FRAGMENT_TAG);
if (prev != null) {
fragmentTransaction.remove(prev);
}
fragmentTransaction.commit();
}
}