From 11c7d3fa73dc7dede63cb36addf4642f27fdd44d Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Sat, 4 Sep 2021 14:50:02 +0200 Subject: [PATCH] Fix app crash related to lifecycle --- .../play/ui/fragment/AlbumPageFragment.java | 4 ++- .../play/ui/fragment/DownloadFragment.java | 27 +++++++------------ .../ui/fragment/PlaylistPageFragment.java | 2 +- .../dialog/PlaylistChooserDialog.java | 16 ++++++----- 4 files changed, 22 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java index 7661eddc..a851e261 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java @@ -93,7 +93,9 @@ public class AlbumPageFragment extends Fragment { public boolean onOptionsItemSelected(@NonNull MenuItem item) { if (item.getItemId() == R.id.action_download_album) { albumPageViewModel.getAlbumSongLiveList(requireActivity()).observe(requireActivity(), songs -> { - DownloadUtil.getDownloadTracker(requireContext()).download(songs, null, null); + if(isVisible() && getActivity() != null) { + DownloadUtil.getDownloadTracker(requireContext()).download(songs, null, null); + } }); return true; } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/DownloadFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/DownloadFragment.java index 20db2a5d..8f072230 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/DownloadFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/DownloadFragment.java @@ -12,7 +12,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.view.ViewCompat; import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentActivity; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.PagerSnapHelper; @@ -279,22 +278,14 @@ public class DownloadFragment extends Fragment { } private void initPlaceholder() { - FragmentActivity requiredActivity = getActivity(); - - if (requiredActivity != null) { - downloadViewModel.getDownloadedTracks(requiredActivity, 20).observe(requiredActivity, songs -> - downloadViewModel.getDownloadedAlbums(requiredActivity, 20).observe(requiredActivity, albums -> - downloadViewModel.getDownloadedArtists(requiredActivity, 20).observe(requiredActivity, artists -> { - if ((songs != null && !songs.isEmpty()) || (albums != null && !albums.isEmpty()) || (artists != null && !artists.isEmpty())) { - if (bind != null) bind.emptyDownloadLayout.setVisibility(View.GONE); - if (bind != null) bind.fragmentDownloadNestedScrollView.setVisibility(View.VISIBLE); - } else { - if (bind != null) bind.emptyDownloadLayout.setVisibility(View.VISIBLE); - if (bind != null) bind.fragmentDownloadNestedScrollView.setVisibility(View.GONE); - } - }) - ) - ); - } + downloadViewModel.getDownloadedTracks(requireActivity(), 20).observe(requireActivity(), songs -> { + if ((songs != null && !songs.isEmpty())) { + if (bind != null) bind.emptyDownloadLayout.setVisibility(View.GONE); + if (bind != null) bind.fragmentDownloadNestedScrollView.setVisibility(View.VISIBLE); + } else { + if (bind != null) bind.emptyDownloadLayout.setVisibility(View.VISIBLE); + if (bind != null) bind.fragmentDownloadNestedScrollView.setVisibility(View.GONE); + } + }); } } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java index 7d296307..f27eb2f2 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java @@ -84,7 +84,7 @@ public class PlaylistPageFragment extends Fragment { public boolean onOptionsItemSelected(@NonNull MenuItem item) { if (item.getItemId() == R.id.action_download_playlist) { playlistPageViewModel.getPlaylistSongLiveList(requireActivity()).observe(requireActivity(), songs -> { - if (getContext() != null) { + if (isVisible() && getActivity() != null) { DownloadUtil.getDownloadTracker(requireContext()).download(songs, playlistPageViewModel.getPlaylist().getId(), playlistPageViewModel.getPlaylist().getName()); } }); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/PlaylistChooserDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/PlaylistChooserDialog.java index b1cb5338..00fdf909 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/PlaylistChooserDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/PlaylistChooserDialog.java @@ -90,13 +90,15 @@ public class PlaylistChooserDialog extends DialogFragment { bind.playlistDialogRecyclerView.setAdapter(playlistHorizontalAdapter); playlistChooserViewModel.getPlaylistList().observe(requireActivity(), playlists -> { - if (playlists.size() > 0) { - if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.GONE); - if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.VISIBLE); - playlistHorizontalAdapter.setItems(playlists); - } else { - if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.VISIBLE); - if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.GONE); + if(playlists != null) { + if (playlists.size() > 0) { + if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.GONE); + if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.VISIBLE); + playlistHorizontalAdapter.setItems(playlists); + } else { + if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.VISIBLE); + if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.GONE); + } } }); }