From 4b4232ce6b246054ec1ce2e877543d91c57de6a9 Mon Sep 17 00:00:00 2001 From: Prathamesh More Date: Thu, 21 Apr 2022 19:24:04 +0530 Subject: [PATCH] Using registerForActivityResult --- .../artists/AbsArtistDetailsFragment.kt | 27 +++++-------------- .../fragments/search/SearchFragment.kt | 15 ++++------- 2 files changed, 12 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt index c173c0202..17ddfd0d4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/AbsArtistDetailsFragment.kt @@ -10,6 +10,7 @@ import android.view.MenuInflater import android.view.MenuItem import android.view.View import androidx.activity.addCallback +import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.widget.PopupMenu import androidx.core.os.bundleOf import androidx.core.text.parseAsHtml @@ -273,10 +274,7 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm R.id.action_set_artist_image -> { val intent = Intent(Intent.ACTION_GET_CONTENT) intent.type = "image/*" - startActivityForResult( - Intent.createChooser(intent, getString(R.string.pick_from_local_storage)), - REQUEST_CODE_SELECT_IMAGE - ) + selectImageLauncher.launch(Intent.createChooser(intent, getString(R.string.pick_from_local_storage))) return true } R.id.action_reset_artist_image -> { @@ -337,18 +335,11 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm } } - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - when (requestCode) { - REQUEST_CODE_SELECT_IMAGE -> if (resultCode == Activity.RESULT_OK) { - data?.data?.let { - CustomArtistImageUtil.getInstance(requireContext()) - .setCustomArtistImage(artist, it) - } - } - else -> if (resultCode == Activity.RESULT_OK) { - println("OK") + private val selectImageLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {result-> + if (result.resultCode == Activity.RESULT_OK) { + result.data?.data?.let { + CustomArtistImageUtil.getInstance(requireContext()) + .setCustomArtistImage(artist, it) } } } @@ -395,8 +386,4 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm super.onDestroyView() _binding = null } - - companion object { - const val REQUEST_CODE_SELECT_IMAGE = 9002 - } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt index 848f32f26..412ad4246 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt @@ -22,6 +22,7 @@ import android.os.Bundle import android.speech.RecognizerIntent import android.view.* import android.view.inputmethod.InputMethodManager +import androidx.activity.result.contract.ActivityResultContracts import androidx.core.content.getSystemService import androidx.core.view.* import androidx.core.widget.doAfterTextChanged @@ -53,7 +54,6 @@ class SearchFragment : AbsMainActivityFragment(R.layout.fragment_search), ChipGroup.OnCheckedStateChangeListener { companion object { const val QUERY = "query" - const val REQ_CODE_SPEECH_INPUT = 9001 } private var _binding: FragmentSearchBinding? = null @@ -203,22 +203,17 @@ class SearchFragment : AbsMainActivityFragment(R.layout.fragment_search), intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()) intent.putExtra(RecognizerIntent.EXTRA_PROMPT, getString(R.string.speech_prompt)) try { - startActivityForResult( - intent, - REQ_CODE_SPEECH_INPUT - ) + speechInputLauncher.launch(intent) } catch (e: ActivityNotFoundException) { e.printStackTrace() showToast(getString(R.string.speech_not_supported)) } } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (resultCode == RESULT_OK) { + private val speechInputLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result-> + if (result.resultCode == RESULT_OK) { val spokenText: String? = - data?.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS) - .let { text -> text?.get(0) } + result?.data?.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)?.get(0) binding.searchView.setText(spokenText) } }