Ver código fonte

Use DialogFragment instead of Dialog to display alert message

cooperku_kdanmobile 5 anos atrás
pai
commit
70c717d3d3

+ 6 - 15
src/main/java/com/kdanmobile/reader/copyfile/CopyFileActivity.kt

@@ -3,7 +3,6 @@ package com.kdanmobile.reader.copyfile
 import android.arch.lifecycle.Observer
 import android.content.Intent
 import android.os.Bundle
-import android.support.v7.app.AlertDialog
 import com.kdanmobile.base.KdanBaseActivity
 import com.kdanmobile.reader.R
 import com.kdanmobile.reader.thumb.FileUtil
@@ -22,7 +21,7 @@ abstract class CopyFileActivity : KdanBaseActivity() {
         const val KEY_SHOULD_COPY_FILE = "should_copy_file"
     }
 
-    private var fileCannotOpenDialog: AlertDialog? = null
+    private var fileCannotOpenDialog: FileCannotOpenDialogFragment? = null
 
     private val viewModel: CopyFileViewModel by viewModel {
         val kdanPdfReaderFolder = getKdanPdfReaderFolder()
@@ -61,19 +60,11 @@ abstract class CopyFileActivity : KdanBaseActivity() {
     }
 
     private fun showFileCannotOpenDialog(title: String) {
-        fileCannotOpenDialog = AlertDialog.Builder(this)
-                .setTitle(title)
-                .setCancelable(false)
-                .setPositiveButton(getString(android.R.string.ok)) { dialog, which ->
-                    finish()
-                }
-                .create()
-        fileCannotOpenDialog?.show()
-    }
-
-    override fun onDestroy() {
-        fileCannotOpenDialog?.dismiss()
-        super.onDestroy()
+        fileCannotOpenDialog = FileCannotOpenDialogFragment()
+        fileCannotOpenDialog?.arguments = Bundle().also {
+            it.putString(FileCannotOpenDialogFragment.KEY_DIALOG_TITLE, title)
+        }
+        fileCannotOpenDialog?.show(supportFragmentManager, fileCannotOpenDialog?.tag)
     }
 
     private fun startReaderActivity(filePath: String?) {

+ 24 - 0
src/main/java/com/kdanmobile/reader/copyfile/FileCannotOpenDialogFragment.kt

@@ -0,0 +1,24 @@
+package com.kdanmobile.reader.copyfile
+
+import android.app.Dialog
+import android.os.Bundle
+import android.support.v4.app.DialogFragment
+import android.support.v7.app.AlertDialog
+
+class FileCannotOpenDialogFragment : DialogFragment() {
+
+    companion object {
+        const val KEY_DIALOG_TITLE = "title"
+    }
+
+    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+
+        return AlertDialog.Builder(activity!!)
+                .setTitle(arguments?.getString(KEY_DIALOG_TITLE))
+                .setCancelable(false)
+                .setPositiveButton(getString(android.R.string.ok)) { dialog, which ->
+                    activity?.finish()
+                }
+                .create()
+    }
+}