Horis 3 лет назад
Родитель
Сommit
17bcabd561
1 измененных файлов с 15 добавлено и 3 удалено
  1. 15 3
      app/src/main/java/io/legado/app/ui/file/FileManageActivity.kt

+ 15 - 3
app/src/main/java/io/legado/app/ui/file/FileManageActivity.kt

@@ -5,6 +5,7 @@ import android.os.Bundle
 import android.view.View
 import android.view.ViewGroup
 import android.widget.PopupMenu
+import androidx.activity.addCallback
 import androidx.activity.viewModels
 import androidx.appcompat.widget.SearchView
 import androidx.core.content.FileProvider
@@ -55,6 +56,13 @@ class FileManageActivity : VMBaseActivity<ActivityFileManageBinding, FileManageV
         binding.recyclerView.layoutManager = LinearLayoutManager(this)
         binding.recyclerView.addItemDecoration(VerticalDivider(this))
         binding.recyclerView.adapter = fileAdapter
+        onBackPressedDispatcher.addCallback(this) {
+            if (viewModel.lastDir != viewModel.rootDoc) {
+                gotoLastDir()
+                return@addCallback
+            }
+            finish()
+        }
     }
 
     private fun initSearchView() {
@@ -87,6 +95,12 @@ class FileManageActivity : VMBaseActivity<ActivityFileManageBinding, FileManageV
         }
     }
 
+    private fun gotoLastDir() {
+        viewModel.subDocs.removeLastOrNull()
+        pathAdapter.setItems(viewModel.subDocs)
+        viewModel.upFiles(viewModel.lastDir)
+    }
+
     override fun observeLiveBus() {
         viewModel.filesLiveData.observe(this) {
             searchView.setQuery("", false)
@@ -155,9 +169,7 @@ class FileManageActivity : VMBaseActivity<ActivityFileManageBinding, FileManageV
                 val item = getItemByLayoutPosition(holder.layoutPosition)
                 item?.let {
                     if (item == viewModel.lastDir) {
-                        viewModel.subDocs.removeLastOrNull()
-                        pathAdapter.setItems(viewModel.subDocs)
-                        viewModel.upFiles(viewModel.subDocs.lastOrNull() ?: viewModel.rootDoc)
+                        gotoLastDir()
                     } else if (item.isDirectory) {
                         viewModel.subDocs.add(item)
                         pathAdapter.setItems(viewModel.subDocs)