Sfoglia il codice sorgente

android: Fix crash on importing invalid save

Charles Lombardo 3 anni fa
parent
commit
a789046127

+ 5 - 3
src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/ImportExportSavesFragment.kt

@@ -11,6 +11,7 @@ import android.provider.DocumentsContract
 import android.widget.Toast
 import androidx.activity.result.ActivityResultLauncher
 import androidx.activity.result.contract.ActivityResultContracts
+import androidx.appcompat.app.AppCompatActivity
 import androidx.documentfile.provider.DocumentFile
 import androidx.fragment.app.DialogFragment
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
@@ -49,6 +50,7 @@ class ImportExportSavesFragment : DialogFragment() {
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
+        val activity = requireActivity() as AppCompatActivity
 
         val activityResultRegistry = requireActivity().activityResultRegistry
         startForResultExportSave = activityResultRegistry.register(
@@ -61,7 +63,7 @@ class ImportExportSavesFragment : DialogFragment() {
             "documentPickerKey",
             ActivityResultContracts.OpenDocument()
         ) {
-            it?.let { uri -> importSave(uri) }
+            it?.let { uri -> importSave(uri, activity) }
         }
     }
 
@@ -183,7 +185,7 @@ class ImportExportSavesFragment : DialogFragment() {
      * Imports the save files contained in the zip file, and replaces any existing ones with the new save file.
      * @param zipUri The Uri of the zip file containing the save file(s) to import.
      */
-    private fun importSave(zipUri: Uri) {
+    private fun importSave(zipUri: Uri, activity: AppCompatActivity) {
         val inputZip = context.contentResolver.openInputStream(zipUri)
         // A zip needs to have at least one subfolder named after a TitleId in order to be considered valid.
         var validZip = false
@@ -214,7 +216,7 @@ class ImportExportSavesFragment : DialogFragment() {
                         MessageDialogFragment.newInstance(
                             R.string.save_file_invalid_zip_structure,
                             R.string.save_file_invalid_zip_structure_description
-                        ).show(childFragmentManager, MessageDialogFragment.TAG)
+                        ).show(activity.supportFragmentManager, MessageDialogFragment.TAG)
                         return@withContext
                     }
                     Toast.makeText(