From a8d9d71a74e99aa17e7ad8ade953b181e71c3249 Mon Sep 17 00:00:00 2001 From: Mohammad Reza Najafi Date: Mon, 5 Apr 2021 07:29:21 +0200 Subject: [PATCH 1/2] Adds compatibility with hilt's viewmodel injection a bit of code cleanup --- .../localizationapp/hilt/HiltActivity.kt | 28 ---- .../hilt/HiltFragmentWithViewModel.kt | 69 +++++++++ .../localizationapp/hilt/HiltViewModel.kt | 13 ++ .../localizationapp/hilt/StoryProvider.kt | 6 +- app/src/main/res/layout/activity_hilt.xml | 53 +------ app/src/main/res/layout/fragment_hilt.xml | 52 +++++++ .../core/LocalizationActivityDelegate.kt | 3 +- .../core/LocalizationApplicationDelegate.kt | 5 +- .../core/LocalizationUtility.kt | 132 ++++++++++++++---- .../ui/LocalizationApplication.kt | 5 + 10 files changed, 253 insertions(+), 113 deletions(-) create mode 100644 app/src/main/java/com/akexorcist/localizationapp/hilt/HiltFragmentWithViewModel.kt create mode 100644 app/src/main/java/com/akexorcist/localizationapp/hilt/HiltViewModel.kt create mode 100644 app/src/main/res/layout/fragment_hilt.xml diff --git a/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltActivity.kt b/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltActivity.kt index 4a16cff..cf71cba 100644 --- a/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltActivity.kt +++ b/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltActivity.kt @@ -13,36 +13,8 @@ class HiltActivity : LocalizationActivity() { @Inject lateinit var storyProvider: StoryProvider - companion object { - private const val KEY_SCROLL_X = "scroll_x" - } - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding.root) - - binding.textViewContent.text = storyProvider.getAppleStory() - binding.btnBack.setOnClickListener { super.onBackPressed() } - binding.layoutLanguageChooser.btnAmerican.setOnClickListener { setLanguage("en") } - binding.layoutLanguageChooser.btnChinese.setOnClickListener { setLanguage("zh") } - binding.layoutLanguageChooser.btnItalian.setOnClickListener { setLanguage("it") } - binding.layoutLanguageChooser.btnJapanese.setOnClickListener { setLanguage("ja") } - binding.layoutLanguageChooser.btnKorean.setOnClickListener { setLanguage("ko") } - binding.layoutLanguageChooser.btnPortuguese.setOnClickListener { setLanguage("pt") } - binding.layoutLanguageChooser.btnThai.setOnClickListener { setLanguage("th") } - } - - public override fun onSaveInstanceState(outState: Bundle) { - // Save x-position of horizontal scroll view. - outState.putInt(KEY_SCROLL_X, binding.layoutLanguageChooser.svLanguageChooser.scrollX) - super.onSaveInstanceState(outState) - } - - public override fun onRestoreInstanceState(savedInstanceState: Bundle) { - super.onRestoreInstanceState(savedInstanceState) - // Restore x-position of horizontal scroll view. - binding.layoutLanguageChooser.svLanguageChooser.scrollTo( - savedInstanceState.getInt(KEY_SCROLL_X), 0 - ) } } diff --git a/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltFragmentWithViewModel.kt b/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltFragmentWithViewModel.kt new file mode 100644 index 0000000..36dcf50 --- /dev/null +++ b/app/src/main/java/com/akexorcist/localizationapp/hilt/HiltFragmentWithViewModel.kt @@ -0,0 +1,69 @@ +package com.akexorcist.localizationapp.hilt + +import android.os.Bundle +import android.view.View +import android.widget.Button +import android.widget.ImageButton +import android.widget.ScrollView +import android.widget.TextView +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import com.akexorcist.localizationactivity.ui.LocalizationActivity +import com.akexorcist.localizationapp.R +import dagger.hilt.android.AndroidEntryPoint + + +@AndroidEntryPoint +class HiltFragmentWithViewModel : Fragment(R.layout.fragment_hilt) { + + private val hiltViewModel: HiltViewModel by viewModels() + + private var languageChooserScrollView: ScrollView? = null + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setupUi(view) + } + + private fun setupUi(view: View) { + languageChooserScrollView = view.findViewById(R.id.sv_language_chooser) + + view.findViewById(R.id.text_view_content).text = hiltViewModel.storyProvider.getAppleStory() + view.findViewById