diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/AlertDialogFragment.kt b/mobile/src/main/java/be/mygod/vpnhotspot/AlertDialogFragment.kt index b5b9abf5..67bc0180 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/AlertDialogFragment.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/AlertDialogFragment.kt @@ -8,6 +8,7 @@ import android.os.Parcelable import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatDialogFragment import androidx.fragment.app.Fragment +import be.mygod.vpnhotspot.util.showAllowingStateLoss import kotlinx.android.parcel.Parcelize /** @@ -42,7 +43,7 @@ abstract class AlertDialogFragment : fun show(target: Fragment, requestCode: Int = 0, tag: String = javaClass.simpleName) { setTargetFragment(target, requestCode) - show(target.parentFragmentManager, tag) + showAllowingStateLoss(target.parentFragmentManager, tag) } } diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/SettingsPreferenceFragment.kt b/mobile/src/main/java/be/mygod/vpnhotspot/SettingsPreferenceFragment.kt index cdb93683..097c3da1 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/SettingsPreferenceFragment.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/SettingsPreferenceFragment.kt @@ -20,6 +20,7 @@ import be.mygod.vpnhotspot.preference.SharedPreferenceDataStore import be.mygod.vpnhotspot.preference.SummaryFallbackProvider import be.mygod.vpnhotspot.util.RootSession import be.mygod.vpnhotspot.util.launchUrl +import be.mygod.vpnhotspot.util.showAllowingStateLoss import be.mygod.vpnhotspot.widget.SmartSnackbar import com.google.android.material.snackbar.Snackbar import kotlinx.coroutines.Dispatchers @@ -167,7 +168,7 @@ class SettingsPreferenceFragment : PreferenceFragmentCompat() { true } findPreference("misc.donate")!!.setOnPreferenceClickListener { - EBegFragment().show(parentFragmentManager, "EBegFragment") + EBegFragment().showAllowingStateLoss(parentFragmentManager, "EBegFragment") true } } @@ -180,7 +181,7 @@ class SettingsPreferenceFragment : PreferenceFragmentCompat() { app.connectivity.getLinkProperties(it)?.interfaceName }.toTypedArray()) setTargetFragment(this@SettingsPreferenceFragment, 0) - }.show(parentFragmentManager, preference.key) + }.showAllowingStateLoss(parentFragmentManager, preference.key) else -> super.onDisplayPreferenceDialog(preference) } } diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/configuration/WifiApDialogFragment.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/configuration/WifiApDialogFragment.kt index 05928b04..39fa091b 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/configuration/WifiApDialogFragment.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/configuration/WifiApDialogFragment.kt @@ -23,6 +23,7 @@ import be.mygod.vpnhotspot.R import be.mygod.vpnhotspot.RepeaterService import be.mygod.vpnhotspot.databinding.DialogWifiApBinding import be.mygod.vpnhotspot.util.QRCodeDialog +import be.mygod.vpnhotspot.util.showAllowingStateLoss import be.mygod.vpnhotspot.util.toByteArray import be.mygod.vpnhotspot.util.toParcelable import be.mygod.vpnhotspot.widget.SmartSnackbar @@ -199,7 +200,7 @@ class WifiApDialogFragment : AlertDialogFragment false diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/util/Utils.kt b/mobile/src/main/java/be/mygod/vpnhotspot/util/Utils.kt index 47e2c4f2..02b3f21f 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/util/Utils.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/util/Utils.kt @@ -16,6 +16,8 @@ import androidx.annotation.DrawableRes import androidx.core.net.toUri import androidx.core.view.isVisible import androidx.databinding.BindingAdapter +import androidx.fragment.app.DialogFragment +import androidx.fragment.app.FragmentManager import be.mygod.vpnhotspot.App.Companion.app import be.mygod.vpnhotspot.room.macToString import be.mygod.vpnhotspot.widget.SmartSnackbar @@ -60,6 +62,10 @@ fun ByteArray.toParcelable() = useParcel { p -> p.readParcelable(javaClass.classLoader) } +fun DialogFragment.showAllowingStateLoss(manager: FragmentManager, tag: String? = null) { + if (!manager.isStateSaved) show(manager, tag) +} + fun broadcastReceiver(receiver: (Context, Intent) -> Unit) = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) = receiver(context, intent) }