detail: fix up navigation
No clue why this is happening, but I assume another classic android moment has occurred and now I can't navigate away when objects are invalidated unless I navigate away twice. Because reasons. Amazingly designed platform. Resolves #989.
This commit is contained in:
parent
357c7cc329
commit
bfdccd3ba5
5 changed files with 12 additions and 5 deletions
|
@ -106,7 +106,7 @@ class AlbumDetailFragment : DetailFragment<Album, Song>() {
|
||||||
private fun updateAlbum(album: Album?) {
|
private fun updateAlbum(album: Album?) {
|
||||||
if (album == null) {
|
if (album == null) {
|
||||||
L.d("No album to show, navigating away")
|
L.d("No album to show, navigating away")
|
||||||
findNavController().navigateUp()
|
exit()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -113,7 +113,7 @@ class ArtistDetailFragment : DetailFragment<Artist, Music>() {
|
||||||
private fun updateArtist(artist: Artist?) {
|
private fun updateArtist(artist: Artist?) {
|
||||||
if (artist == null) {
|
if (artist == null) {
|
||||||
L.d("No artist to show, navigating away")
|
L.d("No artist to show, navigating away")
|
||||||
findNavController().navigateUp()
|
exit()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val binding = requireBinding()
|
val binding = requireBinding()
|
||||||
|
|
|
@ -22,6 +22,7 @@ import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import androidx.fragment.app.activityViewModels
|
import androidx.fragment.app.activityViewModels
|
||||||
import androidx.navigation.findNavController
|
import androidx.navigation.findNavController
|
||||||
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import com.google.android.material.appbar.AppBarLayout
|
import com.google.android.material.appbar.AppBarLayout
|
||||||
import com.google.android.material.transition.MaterialSharedAxis
|
import com.google.android.material.transition.MaterialSharedAxis
|
||||||
|
@ -129,4 +130,11 @@ abstract class DetailFragment<P : MusicParent, C : Music> :
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract fun onOpenParentMenu()
|
abstract fun onOpenParentMenu()
|
||||||
|
|
||||||
|
protected fun exit() {
|
||||||
|
// For some insane and absurd reason we wont actually navigate away in detail views
|
||||||
|
// until this is called twice.
|
||||||
|
findNavController().navigateUp()
|
||||||
|
findNavController().navigateUp()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,7 +112,7 @@ class GenreDetailFragment : DetailFragment<Genre, Music>() {
|
||||||
private fun updateGenre(genre: Genre?) {
|
private fun updateGenre(genre: Genre?) {
|
||||||
if (genre == null) {
|
if (genre == null) {
|
||||||
L.d("No genre to show, navigating away")
|
L.d("No genre to show, navigating away")
|
||||||
findNavController().navigateUp()
|
exit()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val binding = requireBinding()
|
val binding = requireBinding()
|
||||||
|
|
|
@ -184,8 +184,7 @@ class PlaylistDetailFragment :
|
||||||
|
|
||||||
private fun updatePlaylist(playlist: Playlist?, editedPlaylist: List<Song>?) {
|
private fun updatePlaylist(playlist: Playlist?, editedPlaylist: List<Song>?) {
|
||||||
if (playlist == null) {
|
if (playlist == null) {
|
||||||
// Playlist we were showing no longer exists.
|
exit()
|
||||||
findNavController().navigateUp()
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val binding = requireBinding()
|
val binding = requireBinding()
|
||||||
|
|
Loading…
Reference in a new issue