From 84c8842dfa78becbc4bfccc2e26426a6cb4f840f Mon Sep 17 00:00:00 2001 From: tonihei Date: Thu, 28 Feb 2019 15:38:42 +0000 Subject: [PATCH] Prevent multiple track selection dialogs in PlayerActivity. PiperOrigin-RevId: 236119640 --- .../android/exoplayer2/demo/PlayerActivity.java | 11 ++++++++--- .../android/exoplayer2/demo/TrackSelectionDialog.java | 7 +++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java index 2839d3937c..2c252714b4 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java @@ -126,6 +126,7 @@ public class PlayerActivity extends AppCompatActivity private LinearLayout debugRootView; private Button selectTracksButton; private TextView debugTextView; + private boolean isShowingTrackSelectionDialog; private DataSource.Factory dataSourceFactory; private SimpleExoPlayer player; @@ -293,9 +294,13 @@ public class PlayerActivity extends AppCompatActivity @Override public void onClick(View view) { - if (view == selectTracksButton) { - TrackSelectionDialog dialog = TrackSelectionDialog.createForTrackSelector(trackSelector); - dialog.show(getSupportFragmentManager(), /* tag= */ null); + if (view == selectTracksButton && !isShowingTrackSelectionDialog) { + isShowingTrackSelectionDialog = true; + TrackSelectionDialog newDialog = + TrackSelectionDialog.createForTrackSelector( + trackSelector, + /* onDismissListener= */ dialog -> isShowingTrackSelectionDialog = false); + newDialog.show(getSupportFragmentManager(), /* tag= */ null); } } diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/TrackSelectionDialog.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/TrackSelectionDialog.java index 2f2461f82f..dfd137e723 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/TrackSelectionDialog.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/TrackSelectionDialog.java @@ -63,8 +63,11 @@ public final class TrackSelectionDialog extends DialogFragment { * the track selector's parameters when tracks are selected. * * @param trackSelector A {@link DefaultTrackSelector}. + * @param onDismissListener {@link DialogInterface.OnDismissListener} called when the dialog is + * dismissed. */ - public static TrackSelectionDialog createForTrackSelector(DefaultTrackSelector trackSelector) { + public static TrackSelectionDialog createForTrackSelector( + DefaultTrackSelector trackSelector, DialogInterface.OnDismissListener onDismissListener) { MappedTrackInfo mappedTrackInfo = Assertions.checkNotNull(trackSelector.getCurrentMappedTrackInfo()); TrackSelectionDialog trackSelectionDialog = new TrackSelectionDialog(); @@ -94,7 +97,7 @@ public final class TrackSelectionDialog extends DialogFragment { } trackSelector.setParameters(builder); }, - /* onDismissListener= */ (dialog) -> {}); + onDismissListener); return trackSelectionDialog; }