Prevent multiple track selection dialogs in PlayerActivity.

PiperOrigin-RevId: 236119640
This commit is contained in:
tonihei 2019-02-28 15:38:42 +00:00 committed by Oliver Woodman
parent 3eeb3acb3b
commit 84c8842dfa
2 changed files with 13 additions and 5 deletions

View File

@ -126,6 +126,7 @@ public class PlayerActivity extends AppCompatActivity
private LinearLayout debugRootView; private LinearLayout debugRootView;
private Button selectTracksButton; private Button selectTracksButton;
private TextView debugTextView; private TextView debugTextView;
private boolean isShowingTrackSelectionDialog;
private DataSource.Factory dataSourceFactory; private DataSource.Factory dataSourceFactory;
private SimpleExoPlayer player; private SimpleExoPlayer player;
@ -293,9 +294,13 @@ public class PlayerActivity extends AppCompatActivity
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (view == selectTracksButton) { if (view == selectTracksButton && !isShowingTrackSelectionDialog) {
TrackSelectionDialog dialog = TrackSelectionDialog.createForTrackSelector(trackSelector); isShowingTrackSelectionDialog = true;
dialog.show(getSupportFragmentManager(), /* tag= */ null); TrackSelectionDialog newDialog =
TrackSelectionDialog.createForTrackSelector(
trackSelector,
/* onDismissListener= */ dialog -> isShowingTrackSelectionDialog = false);
newDialog.show(getSupportFragmentManager(), /* tag= */ null);
} }
} }

View File

@ -63,8 +63,11 @@ public final class TrackSelectionDialog extends DialogFragment {
* the track selector's parameters when tracks are selected. * the track selector's parameters when tracks are selected.
* *
* @param trackSelector A {@link DefaultTrackSelector}. * @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 = MappedTrackInfo mappedTrackInfo =
Assertions.checkNotNull(trackSelector.getCurrentMappedTrackInfo()); Assertions.checkNotNull(trackSelector.getCurrentMappedTrackInfo());
TrackSelectionDialog trackSelectionDialog = new TrackSelectionDialog(); TrackSelectionDialog trackSelectionDialog = new TrackSelectionDialog();
@ -94,7 +97,7 @@ public final class TrackSelectionDialog extends DialogFragment {
} }
trackSelector.setParameters(builder); trackSelector.setParameters(builder);
}, },
/* onDismissListener= */ (dialog) -> {}); onDismissListener);
return trackSelectionDialog; return trackSelectionDialog;
} }