diff options
Diffstat (limited to 'ui/src/com/android/providers/downloads/ui/TrampolineActivity.java')
-rwxr-xr-x | ui/src/com/android/providers/downloads/ui/TrampolineActivity.java | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java b/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java index 8ada01b0..b4f2698e 100755 --- a/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java +++ b/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java @@ -41,7 +41,7 @@ import libcore.io.IoUtils; * Intercept all download clicks to provide special behavior. For example, * PackageInstaller really wants raw file paths. */ -public class TrampolineActivity extends Activity { +public class TrampolineActivity extends Activity implements DialogDismissListener { private static final String TAG_PAUSED = "paused"; private static final String TAG_FAILED = "failed"; @@ -125,7 +125,14 @@ public class TrampolineActivity extends Activity { sendBroadcast(intent); } + @Override + public void onDialogDismiss() { + finish(); + } + public static class PausedDialogFragment extends DialogFragment { + private DialogDismissListener mListener; + public static void show(FragmentManager fm, long id) { final PausedDialogFragment dialog = new PausedDialogFragment(); final Bundle args = new Bundle(); @@ -135,8 +142,15 @@ public class TrampolineActivity extends Activity { } @Override + public void onDetach() { + super.onDetach(); + mListener = null; + } + + @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Context context = getActivity(); + mListener = (DialogDismissListener) getActivity(); final DownloadManager dm = (DownloadManager) context.getSystemService( Context.DOWNLOAD_SERVICE); @@ -165,13 +179,15 @@ public class TrampolineActivity extends Activity { @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); - if (getActivity() != null) { - getActivity().finish(); + if (mListener != null) { + mListener.onDialogDismiss(); } } } public static class FailedDialogFragment extends DialogFragment { + private DialogDismissListener mListener; + public static void show(FragmentManager fm, long id, int reason) { final FailedDialogFragment dialog = new FailedDialogFragment(); final Bundle args = new Bundle(); @@ -182,8 +198,15 @@ public class TrampolineActivity extends Activity { } @Override + public void onDetach() { + super.onDetach(); + mListener = null; + } + + @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Context context = getActivity(); + mListener = (DialogDismissListener) getActivity(); final DownloadManager dm = (DownloadManager) context.getSystemService( Context.DOWNLOAD_SERVICE); @@ -236,8 +259,8 @@ public class TrampolineActivity extends Activity { @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); - if (getActivity() != null) { - getActivity().finish(); + if (mListener != null) { + mListener.onDialogDismiss(); } } } |