TransWikia.com

ViewPage и TableLayout. Resources$NotFoundException

Stack Overflow на русском Asked on November 27, 2021

Использую ViewPage и TabLayout для горизонтального скролинга фрагментов. На sdk 7.0 и выше работает все замечательно. Но когда происходит просмотр на устройствах версией 6.0 и ниже, то приложение вылетает. Строка, из-за которой происходит вылет отмечена в коде. Если ее закоммитить или строку выше (может быть проблема в адаптаре, пока поиски ни к чему не привели), то приложение работает, но без нужного функционала. Кто-нибудь сталкивался с похожей проблемой? Из-за чего может быть такое (потому что только на 6.0 и ниже такая проблема)?

Сам код:

private fun initViewPagerAndTabLayout(){
    binding.entranceSystemViewpager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener{
        override fun onPageScrollStateChanged(state: Int) {
        }

        override fun onPageScrolled(
            position: Int,
            positionOffset: Float,
            positionOffsetPixels: Int
        ) {
        }

        override fun onPageSelected(position: Int) {
            binding.entranceSystemViewpager.reMeasureCurrentPage(binding.entranceSystemViewpager.currentItem)
        }
    })

    val viewPagerAdapter = ViewPagerAdapter(requireActivity().supportFragmentManager)

    binding.entranceSystemViewpager.adapter = viewPagerAdapter

    //строка на которой вылетает приложение
    binding.entranceSystemTablayout.setupWithViewPager(binding.entranceSystemViewpager)
}

private inner class ViewPagerAdapter(fragmentManager: FragmentManager) : FragmentPagerAdapter(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
    private val listFragments : List<Fragment> = listOf(
        BannerShops(), BannerSticker(),
        BannerList()
    )

    override fun getItem(position: Int): Fragment {
        return listFragments[position]
    }

    override fun getCount(): Int {
        return listFragments.count()
    }
}

Код ошибки:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.test, PID: 13564
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test/com.test.project.activities.MainActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f0700db
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
    at android.app.ActivityThread.-wrap11(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f0700db
    at android.content.res.Resources.getValue(Resources.java:1351)
    at androidx.appcompat.widget.ResourceManagerInternal.loadDrawableFromDelegates(ResourceManagerInternal.java:252)
    at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:139)
    at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:132)
    at androidx.appcompat.content.res.AppCompatResources.getDrawable(AppCompatResources.java:104)
    at com.google.android.material.tabs.TabLayout$TabView.updateBackgroundDrawable(TabLayout.java:2243)
    at com.google.android.material.tabs.TabLayout$TabView.<init>(TabLayout.java:2231)
    at com.google.android.material.tabs.TabLayout.createTabView(TabLayout.java:1463)
    at com.google.android.material.tabs.TabLayout.newTab(TabLayout.java:818)
    at com.google.android.material.tabs.TabLayout.populateFromPagerAdapter(TabLayout.java:1440)
    at com.google.android.material.tabs.TabLayout.setPagerAdapter(TabLayout.java:1431)
    at com.google.android.material.tabs.TabLayout.setupWithViewPager(TabLayout.java:1342)
    at com.google.android.material.tabs.TabLayout.setupWithViewPager(TabLayout.java:1303)
    at com.google.android.material.tabs.TabLayout.setupWithViewPager(TabLayout.java:1283)
    at com.test.project.fragments.EntranceApp.initViewPagerAndTabLayout(EntranceApp.kt:80)
    at com.test.project.fragments.EntranceApp.onViewCreated(EntranceApp.kt:52)
    at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:332)
    at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1199)
    at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1368)
    at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1446)
    at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1509)
    at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447)
    at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2181)
    at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2004)
    at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1959)
    at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1861)
    at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2641)
    at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2589)
    at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247)
    at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541)
    at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)
    at android.app.Activity.performStart(Activity.java:6253)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
    at android.app.ActivityThread.-wrap11(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5417) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

One Answer

Как я понял вы пытаетесь изменить изображение. Но старые версии андроид почему-то не любят изображения в векторе. Если вы используете вектор, то решением будет заменить вектор на png/jpg.

Answered by ANDREIRTT on November 27, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP