在onTabSelected里面调用viewPager.setCurrentItem方法发生java.lang.NullPointerException错误

初始化顺序影响ViewPager使用与NullPointerException解决
在向ActionBar添加Tab并默认选择第一个Tab时,若先初始化ActionBar导致ViewPager未初始化,随后调用viewPager.setCurrentItem将引发NullPointerException。通过调整初始化顺序至先初始化ViewPager,再初始化ActionBar,可避免此错误,解决编程难题。

onTabSelected里面调用viewPager.setCurrentItem方法

发生了java.lang.NullPointerException错误,一开始看自己的代码,什么错误都没有,和官网的示例代码是一模一样的,但只要在onTabSelected里调用setCurrentItem就会报错,苦思冥想了好久,发现和官网代码唯一不同的就是初始化ActionBarViewPager的位置不一样,官网先初始化ViewPager,再初始化ActionBar,我反过来了,然后我把顺序也改的和官网一样,结果就可以运行了。

原因是:

 

因为在向ActionBar添加Tab的时候,默认会把第一个Tab设置为被选择的状态,所以会先调用一次onTabSelected

而这个时候,ViewPager还没有初始化,所以调用viewPagersetCurrentItem就会报出NullPointerException。。。。。

 编程真难

怎么解决错误PROCESS ENDED (18378) for package com.example.app2526 ---------------------------- 2025-05-27 18:30:22.636 348-1216 BufferQueueProducer surfaceflinger E [SurfaceView - com.example.app2526/com.example.app2526.MainActivity#0](id:15c00000522,api:3,p:432,c:348) cancelBuffer: BufferQueue has been abandoned 2025-05-27 18:30:22.670 348-1216 BufferQueueProducer surfaceflinger E [SurfaceView - com.example.app2526/com.example.app2526.MainActivity#0](id:15c00000522,api:3,p:432,c:348) connect: BufferQueue has been abandoned ---------------------------- PROCESS STARTED (18536) for package com.example.app2526 ---------------------------- 2025-05-27 18:30:25.230 18536-18536 NetworkSecurityConfig com.example.app2526 D No Network Security Config specified, using platform default 2025-05-27 18:30:25.230 18536-18536 NetworkSecurityConfig com.example.app2526 D No Network Security Config specified, using platform default 2025-05-27 18:30:25.310 18536-18561 libEGL com.example.app2526 D loaded /vendor/lib/egl/libEGL_emulation.so 2025-05-27 18:30:25.312 18536-18561 libEGL com.example.app2526 D loaded /vendor/lib/egl/libGLESv1_CM_emulation.so 2025-05-27 18:30:25.316 18536-18561 libEGL com.example.app2526 D loaded /vendor/lib/egl/libGLESv2_emulation.so 2025-05-27 18:30:25.334 18536-18536 AppCompatDelegate com.example.app2526 D Checking for metadata for AppLocalesMetadataHolderService : Service not found 2025-05-27 18:30:25.395 18536-18536 example.app252 com.example.app2526 W Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed) 2025-05-27 18:30:25.395 18536-18536 example.app252 com.example.app2526 W Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed) 2025-05-27 18:30:25.643 18536-18559 HostConnection com.example.app2526 D HostConnection::get() New Host Connection established 0xd4552b50, tid 18559 2025-05-27 18:30:25.647 18536-18559 HostConnection com.example.app2526 D HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1 ANDROID_EMU_host_composition_v2 ANDROID_EMU_vulkan ANDROID_EMU_deferred_vulkan_commands ANDROID_EMU_vulkan_null_optional_strings ANDROID_EMU_vulkan_create_resources_with_requirements ANDROID_EMU_YUV_Cache ANDROID_EMU_vulkan_ignored_handles ANDROID_EMU_has_shared_slots_host_memory_allocator ANDROID_EMU_vulkan_free_memory_sync ANDROID_EMU_vulkan_shader_float16_int8 ANDROID_EMU_vulkan_async_queue_submit ANDROID_EMU_sync_buffer_data ANDROID_EMU_vulkan_async_qsri ANDROID_EMU_read_color_buffer_dma GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_host_side_tracing ANDROID_EMU_gles_max_version_2 2025-05-27 18:30:25.648 18536-18559 OpenGLRenderer com.example.app2526 W Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without... 2025-05-27 18:30:25.663 18536-18559 EGL_emulation com.example.app2526 D eglCreateContext: 0xd455b6e0: maj 2 min 0 rcv 2 2025-05-27 18:30:25.696 18536-18559 EGL_emulation com.example.app2526 D eglMakeCurrent: 0xd455b6e0: ver 2 0 (tinfo 0xd4646730) (first time) 2025-05-27 18:30:25.738 18536-18559 Gralloc4 com.example.app2526 I mapper 4.x is not supported 2025-05-27 18:30:25.739 18536-18559 HostConnection com.example.app2526 D createUnique: call 2025-05-27 18:30:25.739 18536-18559 HostConnection com.example.app2526 D HostConnection::get() New Host Connection established 0xd455ae90, tid 18559 2025-05-27 18:30:25.794 18536-18559 HostConnection com.example.app2526 D HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1 ANDROID_EMU_host_composition_v2 ANDROID_EMU_vulkan ANDROID_EMU_deferred_vulkan_commands ANDROID_EMU_vulkan_null_optional_strings ANDROID_EMU_vulkan_create_resources_with_requirements ANDROID_EMU_YUV_Cache ANDROID_EMU_vulkan_ignored_handles ANDROID_EMU_has_shared_slots_host_memory_allocator ANDROID_EMU_vulkan_free_memory_sync ANDROID_EMU_vulkan_shader_float16_int8 ANDROID_EMU_vulkan_async_queue_submit ANDROID_EMU_sync_buffer_data ANDROID_EMU_vulkan_async_qsri ANDROID_EMU_read_color_buffer_dma GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_host_side_tracing ANDROID_EMU_gles_max_version_2 2025-05-27 18:30:27.372 18536-18536 VideoPlayer com.example.app2526 E 初始化错误 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.VideoView.setMediaController(android.widget.MediaController)' on a null object reference at com.example.app2526.Fragment_3.initVideoPlayer(Fragment_3.java:125) at com.example.app2526.Fragment_3.onViewCreated(Fragment_3.java:103) at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:2987) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:546) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100) at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1971) at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:311) at androidx.fragment.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:274) at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1244) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:669) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:631) at androidx.viewpager.widget.ViewPager.setCurrentItem(ViewPager.java:612) at com.example.app2526.MainActivity$2.onNavigationItemSelected(MainActivity.java:87) at com.google.android.material.navigation.NavigationBarView$1.onMenuItemSelected(NavigationBarView.java:301) at androidx.appcompat.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:836) at androidx.appcompat.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:159) at androidx.appcompat.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:987) at com.google.android.material.navigation.NavigationBarMenuView$1.onClick(NavigationBarMenuView.java:141) at android.view.View.performClick(View.java:7448) at android.view.View.performClickInternal(View.java:7425) at android.view.View.access$3600(View.java:810) at android.view.View$PerformClick.run(View.java:28305) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7656) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 2025-05-27 18:30:27.373 18536-18536 Compatibil...geReporter com.example.app2526 D Compat change id reported: 147798919; UID 10189; state: ENABLED 2025-05-27 18:30:30.266 18536-18536 VideoPlayer com.example.app2526 E 初始化错误 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.VideoView.setMediaController(android.widget.MediaController)' on a null object reference at com.example.app2526.Fragment_3.initVideoPlayer(Fragment_3.java:125) at com.example.app2526.Fragment_3.onViewCreated(Fragment_3.java:103) at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:2987) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:546) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100) at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1971) at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:311) at androidx.fragment.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:274) at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1244) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:669) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:631) at androidx.viewpager.widget.ViewPager.setCurrentItem(ViewPager.java:612) at com.example.app2526.MainActivity$2.onNavigationItemSelected(MainActivity.java:87) at com.google.android.material.navigation.NavigationBarView$1.onMenuItemSelected(NavigationBarView.java:301) at androidx.appcompat.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:836) at androidx.appcompat.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:159) at androidx.appcompat.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:987) at com.google.android.material.navigation.NavigationBarMenuView$1.onClick(NavigationBarMenuView.java:141) at android.view.View.performClick(View.java:7448) at android.view.View.performClickInternal(View.java:7425) at android.view.View.access$3600(View.java:810) at android.view.View$PerformClick.run(View.java:28305) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7656) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 2025-05-27 18:30:30.678 18536-18567 ProfileInstaller com.example.app2526 D Installing profile for com.example.app2526
05-29
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值