diff --git a/app/src/main/kotlin/org/fossify/filemanager/activities/ReadTextActivity.kt b/app/src/main/kotlin/org/fossify/filemanager/activities/ReadTextActivity.kt index 819e4c7a..c01aed37 100644 --- a/app/src/main/kotlin/org/fossify/filemanager/activities/ReadTextActivity.kt +++ b/app/src/main/kotlin/org/fossify/filemanager/activities/ReadTextActivity.kt @@ -32,6 +32,7 @@ class ReadTextActivity : SimpleActivity() { companion object { private const val SELECT_SAVE_FILE_INTENT = 1 private const val SELECT_SAVE_FILE_AND_EXIT_INTENT = 2 + private const val KEY_UNSAVED_TEXT = "KEY_UNSAVED_TEXT" } private val binding by viewBinding(ActivityReadTextBinding::inflate) @@ -85,7 +86,7 @@ class ReadTextActivity : SimpleActivity() { binding.readTextView.onGlobalLayout { ensureBackgroundThread { - checkIntent(uri) + checkIntent(uri, savedInstanceState) } } @@ -97,6 +98,13 @@ class ReadTextActivity : SimpleActivity() { setupToolbar(binding.readTextToolbar, NavigationIcon.Arrow) } + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + if (originalText != binding.readTextView.text.toString()) { + outState.putString(KEY_UNSAVED_TEXT, binding.readTextView.text.toString()) + } + } + override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { super.onActivityResult(requestCode, resultCode, resultData) if (requestCode == SELECT_SAVE_FILE_INTENT && resultCode == Activity.RESULT_OK && resultData != null && resultData.data != null) { @@ -241,7 +249,7 @@ class ReadTextActivity : SimpleActivity() { } } - private fun checkIntent(uri: Uri) { + private fun checkIntent(uri: Uri, savedInstanceState: Bundle?) { originalText = if (uri.scheme == "file") { filePath = uri.path!! val file = File(filePath) @@ -270,7 +278,13 @@ class ReadTextActivity : SimpleActivity() { } runOnUiThread { - binding.readTextView.setText(originalText) + var textToSet = originalText + + if (savedInstanceState != null) { + textToSet = savedInstanceState.getString(KEY_UNSAVED_TEXT, originalText) + } + + binding.readTextView.setText(textToSet) if (originalText.isNotEmpty()) { hideKeyboard() } else {