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

View File

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