From cedfa1998897de850feecaa89499047856d3bdbb Mon Sep 17 00:00:00 2001 From: tonihei Date: Fri, 15 Feb 2019 17:19:20 +0000 Subject: [PATCH] Prevent using view state and use state saved in fragment instead. The system may destroy views at any time and may not have created the view at all. Use the state saved in the fragment to be independant of the existance of the view. PiperOrigin-RevId: 234156285 --- .../exoplayer2/demo/TrackSelectionDialog.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) 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 1b9cf9aeb9..8597e7296c 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 @@ -145,7 +145,7 @@ public final class TrackSelectionDialog extends DialogFragment { */ public boolean getIsDisabled(int rendererIndex) { TrackSelectionViewFragment rendererView = tabFragments.get(rendererIndex); - return rendererView != null && rendererView.trackSelectionView.getIsDisabled(); + return rendererView != null && rendererView.isDisabled; } /** @@ -157,9 +157,7 @@ public final class TrackSelectionDialog extends DialogFragment { */ public List getOverrides(int rendererIndex) { TrackSelectionViewFragment rendererView = tabFragments.get(rendererIndex); - return rendererView == null - ? Collections.emptyList() - : rendererView.trackSelectionView.getOverrides(); + return rendererView == null ? Collections.emptyList() : rendererView.overrides; } @Override @@ -269,10 +267,13 @@ public final class TrackSelectionDialog extends DialogFragment { private boolean allowAdaptiveSelections; private boolean allowMultipleOverrides; - private boolean isDisabled; - private List overrides; + /* package */ boolean isDisabled; + /* package */ List overrides; - /* package */ TrackSelectionView trackSelectionView; + public TrackSelectionViewFragment() { + // Retain instance across orientation changes to prevent loosing access to init data. + setRetainInstance(true); + } public void init( MappedTrackInfo mappedTrackInfo, @@ -301,7 +302,8 @@ public final class TrackSelectionDialog extends DialogFragment { View rootView = inflater.inflate( R.layout.track_selection_dialog_tab, container, /* attachToRoot= */ false); - trackSelectionView = rootView.findViewById(R.id.download_dialog_track_selection_view); + TrackSelectionView trackSelectionView = + rootView.findViewById(R.id.download_dialog_track_selection_view); trackSelectionView.setShowDisableOption(true); trackSelectionView.setAllowMultipleOverrides(allowMultipleOverrides); trackSelectionView.setAllowAdaptiveSelections(allowAdaptiveSelections);