diff options
| author | Charles Lombardo <clombardo169@gmail.com> | 2023-03-15 14:25:31 -0400 |
|---|---|---|
| committer | Charles Lombardo <clombardo169@gmail.com> | 2023-03-15 14:26:37 -0400 |
| commit | 98ab893be7d82b72f89336e5aab884644e2b2c67 (patch) | |
| tree | 9b8b43779bcab753cb9348010cc86ccf9f05aa1d /Source/Android/app/src/main/java | |
| parent | 4281606838c705f81022348eaa5b001e577436a4 (diff) | |
Android: Create extension functions for serializables
Getting serializables without explicitly stating the type is deprecated in Android 13. However we still need a way to get a serializable in versions below that. Now with these we can avoid repeating the same if block.
Diffstat (limited to 'Source/Android/app/src/main/java')
2 files changed, 26 insertions, 6 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/ProfileDialog.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/ProfileDialog.kt index 2779ee7473..acc3f605a9 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/ProfileDialog.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/ui/ProfileDialog.kt @@ -2,7 +2,6 @@ package org.dolphinemu.dolphinemu.features.input.ui -import android.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -14,6 +13,7 @@ import com.google.android.material.divider.MaterialDividerItemDecoration import org.dolphinemu.dolphinemu.R import org.dolphinemu.dolphinemu.databinding.DialogInputProfilesBinding import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag +import org.dolphinemu.dolphinemu.utils.SerializableHelper.serializable class ProfileDialog : BottomSheetDialogFragment() { private var presenter: ProfileDialogPresenter? = null @@ -22,11 +22,7 @@ class ProfileDialog : BottomSheetDialogFragment() { private val binding get() = _binding!! override fun onCreate(savedInstanceState: Bundle?) { - val menuTag: MenuTag = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - requireArguments().getSerializable(KEY_MENU_TAG, MenuTag::class.java) as MenuTag - } else { - requireArguments().getSerializable(KEY_MENU_TAG) as MenuTag - } + val menuTag = requireArguments().serializable<MenuTag>(KEY_MENU_TAG) presenter = ProfileDialogPresenter(this, menuTag) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SerializableHelper.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SerializableHelper.kt new file mode 100644 index 0000000000..cad3b548ce --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SerializableHelper.kt @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +package org.dolphinemu.dolphinemu.utils + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import java.io.Serializable + +object SerializableHelper { + inline fun <reified T : Serializable> Intent.serializable(key: String): T? { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + getSerializableExtra(key, T::class.java) + else + getSerializableExtra(key) as T? + } + + inline fun <reified T : Serializable> Bundle.serializable(key: String): T? { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + getSerializable(key, T::class.java) + else + getSerializable(key) as T? + } +} |
