From 9950c8071ee5c7471ecfeb27b14e266f26e34350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Tue, 12 Dec 2023 11:47:37 -0500 Subject: [PATCH] AccountEditionFragment: avoid using TabLayoutMediator before adapter is set Change-Id: Ide37d61b7b4d911093e54fb8d1d24aa46f367ff1 --- .../cx/ring/account/AccountEditionFragment.kt | 20 ++++++++++++------- .../main/java/cx/ring/share/ScanFragment.kt | 7 ++++++- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/jami-android/app/src/main/java/cx/ring/account/AccountEditionFragment.kt b/jami-android/app/src/main/java/cx/ring/account/AccountEditionFragment.kt index 626f3cb5e..4bf51be7a 100644 --- a/jami-android/app/src/main/java/cx/ring/account/AccountEditionFragment.kt +++ b/jami-android/app/src/main/java/cx/ring/account/AccountEditionFragment.kt @@ -25,6 +25,8 @@ import androidx.annotation.StringRes import androidx.fragment.app.* import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.adapter.FragmentStateAdapter +import androidx.viewpager2.widget.ViewPager2 +import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator import cx.ring.R import cx.ring.contactrequests.BlockListFragment @@ -72,18 +74,22 @@ class AccountEditionFragment : BaseSupportFragment<AccountEditionPresenter, Acco super.onViewCreated(view, savedInstanceState) mAccountId = requireArguments().getString(ACCOUNT_ID_KEY) - mBinding!!.fragmentContainer.viewTreeObserver.addOnScrollChangedListener(this) presenter.init(mAccountId!!) mBinding?.apply { - TabLayoutMediator(slidingTabs, pager){ tab, position -> - tab.text = context?.getString( - if (mAccountIsJami) getJamiPanelTitle(position) - else getSIPPanelTitle(position)) - }.attach() + fragmentContainer.viewTreeObserver.addOnScrollChangedListener(this@AccountEditionFragment) } } + private fun updateAdapter(tabLayout: TabLayout, viewPager: ViewPager2, accountId: String, isJami: Boolean) { + viewPager.adapter = PreferencesPagerAdapter(this@AccountEditionFragment, accountId, isJami) + TabLayoutMediator(tabLayout, viewPager){ tab, position -> + tab.text = context?.getString( + if (mAccountIsJami) getJamiPanelTitle(position) + else getSIPPanelTitle(position)) + }.attach() + } + override fun displaySummary(accountId: String) { toggleView(accountId, true) val fragmentManager = childFragmentManager @@ -111,7 +117,7 @@ class AccountEditionFragment : BaseSupportFragment<AccountEditionPresenter, Acco override fun initViewPager(accountId: String, isJami: Boolean) { mBinding?.apply { pager.offscreenPageLimit = 4 - pager.adapter = PreferencesPagerAdapter(this@AccountEditionFragment, accountId, isJami) + updateAdapter(slidingTabs, pager, accountId, isJami) } val existingFragment = childFragmentManager.findFragmentByTag(BlockListFragment.TAG) as BlockListFragment? if (existingFragment != null) { diff --git a/jami-android/app/src/main/java/cx/ring/share/ScanFragment.kt b/jami-android/app/src/main/java/cx/ring/share/ScanFragment.kt index 0260441a5..e68ece10a 100644 --- a/jami-android/app/src/main/java/cx/ring/share/ScanFragment.kt +++ b/jami-android/app/src/main/java/cx/ring/share/ScanFragment.kt @@ -24,6 +24,7 @@ import android.content.pm.PackageManager import android.view.LayoutInflater import android.view.ViewGroup import android.os.Bundle +import android.util.Log import cx.ring.R import androidx.annotation.StringRes import com.journeyapps.barcodescanner.DefaultDecoderFactory @@ -129,7 +130,11 @@ class ScanFragment : Fragment() { } private fun goToConversation(conversationUri: String) { - (requireActivity() as HomeActivity).startConversation(conversationUri) + try { + (requireActivity() as HomeActivity).startConversation(conversationUri) + } catch (e: Exception) { + Log.w(TAG, "Error while starting conversation", e) + } } private fun checkPermission(): Boolean { -- GitLab