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; }