Skip to content

Commit cce05b7

Browse files
committed
Fix: Allow back button functionality to dismiss language selection dialog
1 parent 4dd1605 commit cce05b7

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.kt

+15-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import android.net.Uri
1111
import android.os.Bundle
1212
import android.text.Editable
1313
import android.text.TextWatcher
14+
import android.view.KeyEvent
1415
import android.view.View
1516
import android.widget.AdapterView
1617
import android.widget.EditText
@@ -332,11 +333,20 @@ class SettingsFragment : PreferenceFragmentCompat() {
332333

333334
val dialog = Dialog(requireActivity())
334335
dialog.setContentView(R.layout.dialog_select_language)
335-
dialog.setCancelable(false)
336+
dialog.setCancelable(true)// Allow dialog to close with the back button
336337
dialog.window?.setLayout(
337338
(resources.displayMetrics.widthPixels * 0.90).toInt(),
338339
(resources.displayMetrics.heightPixels * 0.90).toInt()
339340
)
341+
// Handle back button explicitly to dismiss the dialog
342+
dialog.setOnKeyListener { _, keyCode, event ->
343+
if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_UP) {
344+
dialog.dismiss() // Close the dialog when the back button is pressed
345+
true
346+
} else {
347+
false
348+
}
349+
}
340350
dialog.show()
341351

342352
val editText: EditText = dialog.findViewById(R.id.search_language)
@@ -378,10 +388,12 @@ class SettingsFragment : PreferenceFragmentCompat() {
378388
if (keyListPreference == "appUiDefaultLanguagePref") {
379389
appUiLanguageListPreference?.summary = defLocale.getDisplayLanguage(defLocale)
380390
setLocale(requireActivity(), lCode)
381-
requireActivity().recreate()
382391
val intent = Intent(requireActivity(), MainActivity::class.java)
392+
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
393+
requireActivity().finish()
383394
startActivity(intent)
384-
} else {
395+
}
396+
else {
385397
descriptionLanguageListPreference?.summary = defLocale.getDisplayLanguage(defLocale)
386398
}
387399
dialog.dismiss()

0 commit comments

Comments
 (0)