Fix app crash related to lifecycle

This commit is contained in:
CappielloAntonio 2021-09-04 14:50:02 +02:00
parent d2a80c064c
commit 11c7d3fa73
4 changed files with 22 additions and 27 deletions

View file

@ -93,7 +93,9 @@ public class AlbumPageFragment extends Fragment {
public boolean onOptionsItemSelected(@NonNull MenuItem item) { public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.action_download_album) { if (item.getItemId() == R.id.action_download_album) {
albumPageViewModel.getAlbumSongLiveList(requireActivity()).observe(requireActivity(), songs -> { 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; return true;
} }

View file

@ -12,7 +12,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.PagerSnapHelper; import androidx.recyclerview.widget.PagerSnapHelper;
@ -279,22 +278,14 @@ public class DownloadFragment extends Fragment {
} }
private void initPlaceholder() { private void initPlaceholder() {
FragmentActivity requiredActivity = getActivity(); downloadViewModel.getDownloadedTracks(requireActivity(), 20).observe(requireActivity(), songs -> {
if ((songs != null && !songs.isEmpty())) {
if (requiredActivity != null) { if (bind != null) bind.emptyDownloadLayout.setVisibility(View.GONE);
downloadViewModel.getDownloadedTracks(requiredActivity, 20).observe(requiredActivity, songs -> if (bind != null) bind.fragmentDownloadNestedScrollView.setVisibility(View.VISIBLE);
downloadViewModel.getDownloadedAlbums(requiredActivity, 20).observe(requiredActivity, albums -> } else {
downloadViewModel.getDownloadedArtists(requiredActivity, 20).observe(requiredActivity, artists -> { if (bind != null) bind.emptyDownloadLayout.setVisibility(View.VISIBLE);
if ((songs != null && !songs.isEmpty()) || (albums != null && !albums.isEmpty()) || (artists != null && !artists.isEmpty())) { if (bind != null) bind.fragmentDownloadNestedScrollView.setVisibility(View.GONE);
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);
}
})
)
);
}
} }
} }

View file

@ -84,7 +84,7 @@ public class PlaylistPageFragment extends Fragment {
public boolean onOptionsItemSelected(@NonNull MenuItem item) { public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.action_download_playlist) { if (item.getItemId() == R.id.action_download_playlist) {
playlistPageViewModel.getPlaylistSongLiveList(requireActivity()).observe(requireActivity(), songs -> { playlistPageViewModel.getPlaylistSongLiveList(requireActivity()).observe(requireActivity(), songs -> {
if (getContext() != null) { if (isVisible() && getActivity() != null) {
DownloadUtil.getDownloadTracker(requireContext()).download(songs, playlistPageViewModel.getPlaylist().getId(), playlistPageViewModel.getPlaylist().getName()); DownloadUtil.getDownloadTracker(requireContext()).download(songs, playlistPageViewModel.getPlaylist().getId(), playlistPageViewModel.getPlaylist().getName());
} }
}); });

View file

@ -90,13 +90,15 @@ public class PlaylistChooserDialog extends DialogFragment {
bind.playlistDialogRecyclerView.setAdapter(playlistHorizontalAdapter); bind.playlistDialogRecyclerView.setAdapter(playlistHorizontalAdapter);
playlistChooserViewModel.getPlaylistList().observe(requireActivity(), playlists -> { playlistChooserViewModel.getPlaylistList().observe(requireActivity(), playlists -> {
if (playlists.size() > 0) { if(playlists != null) {
if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.GONE); if (playlists.size() > 0) {
if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.VISIBLE); if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.GONE);
playlistHorizontalAdapter.setItems(playlists); if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.VISIBLE);
} else { playlistHorizontalAdapter.setItems(playlists);
if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.VISIBLE); } else {
if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.GONE); if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.VISIBLE);
if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.GONE);
}
} }
}); });
} }