ViewPager的报错:ViewPager does not have a PagerAdapter set

Android TabLayout+ViewPager黄金组合实战指南 TabLayout和ViewPager是Android原生分页导航的核心组件,基于PagerAdapter实现Fragment页面容器与顶部标签栏的双向协同。其原理在于TabLayout负责UI渲染与用户交互,ViewPager承担页面调度与生命周期管理,二者通过setupWithViewPager建立松耦合绑定。该方案具备零第三方依赖、全版本兼容、调试友好等技术价值,广泛应用于电商详情页、教育App模块切换、政务平台多栏目等场景。相比ViewPager2需自行实现Tab逻辑,或BottomNavigati 阅读详情


03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime: FATAL EXCEPTION: main
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime: Process: tech.androidstudio.tablayoutviewpagerdemo, PID: 17310
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{tech.androidstudio.tablayoutviewpagerdemo/tech.androidstudio.tablayoutviewpagerdemo.MainActivity}: java.lang.IllegalArgumentException: ViewPager does not have a PagerAdapter set
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2386)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:148)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5310)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:  Caused by: java.lang.IllegalArgumentException: ViewPager does not have a PagerAdapter set
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.support.design.widget.TabLayout.setupWithViewPager(TabLayout.java:612)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at tech.androidstudio.tablayoutviewpagerdemo.MainActivity.onCreate(MainActivity.java:34)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:5953)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2386) 
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:148) 
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292) 
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102) 
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135) 
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5310) 
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method) 
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372) 
03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) 

03-14 22:13:14.211 17310-17310/tech.androidstudio.tablayoutviewpagerdemo E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 


原因分析:

因为没有设置adapter 就开始使用ViewPager了,例如我这里mTabLayout.setupWithViewPager(mViewPager);就在mViewPager.setAdapter(adapter);的前面使用了。所以报错了。

package tech.androidstudio.tablayoutviewpagerdemo;

import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import java.util.ArrayList;
import java.util.List;

import tech.androidstudio.tablayoutviewpagerdemo.adapter.TabLayoutFragmentPagerAdapter;

public class MainActivity extends AppCompatActivity {

    private TabLayout mTabLayout;
    private ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTabLayout = (TabLayout)findViewById(R.id.tablayout);
        mViewPager = (ViewPager)findViewById(R.id.viewPager);

        List<Fragment> mList = new ArrayList<Fragment>();
        mList.add(new FirstFragment());
        mList.add(new SecondFragment());
        mList.add(new ThirdFragment());

        TabLayoutFragmentPagerAdapter adapter = new TabLayoutFragmentPagerAdapter(getSupportFragmentManager(),mList);

        //这一步是最关键,将tablayout 和viewpager 连接起来了
        mTabLayout.setupWithViewPager(mViewPager);

        mViewPager.setAdapter(adapter);
    }
}


解决方法:

修改就是在使用之前进行adapter设置。

就是调换mTabLayout.setupWithViewPager(mViewPager);和mViewPager.setAdapter(adapter);的位置。如下


package tech.androidstudio.tablayoutviewpagerdemo;

import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import java.util.ArrayList;
import java.util.List;

import tech.androidstudio.tablayoutviewpagerdemo.adapter.TabLayoutFragmentPagerAdapter;

public class MainActivity extends AppCompatActivity {

    private TabLayout mTabLayout;
    private ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTabLayout = (TabLayout)findViewById(R.id.tablayout);
        mViewPager = (ViewPager)findViewById(R.id.viewPager);

        List<Fragment> mList = new ArrayList<Fragment>();
        mList.add(new FirstFragment());
        mList.add(new SecondFragment());
        mList.add(new ThirdFragment());

        TabLayoutFragmentPagerAdapter adapter = new TabLayoutFragmentPagerAdapter(getSupportFragmentManager(),mList);

        mViewPager.setAdapter(adapter);
        //这一步是最关键,将tablayout 和viewpager 连接起来了
        mTabLayout.setupWithViewPager(mViewPager);


    }
}




MT4量化交易入门:手把手教你用MQL4编写第一个外汇EA(含完整代码) 本文详细介绍了如何使用MQL4在MT4平台上编写第一个外汇EA,涵盖从开发环境配置到均线交叉策略实现的完整流程。通过手把手教学和完整代码示例,帮助量化交易新手快速掌握外汇自动化交易的核心技术,实现高效的MT4量化交易系统。 阅读详情

相关推荐

5G NR上行控制信道PUCCH

一、PUCCH概述 PUCCH用于承载上行控制信息,相比LTE,NR PUCCH支持5种不同的格式,按照时域上所占用的符号数量可以分为短格式和长格式两种,如下表所示,短格式占用1-2个符号,可以承载1-2bit信息,长格式占用4-14个符号,可承载大于2bit的信息。NR引入短格式PUCCH的目的是可以缩短HARQ-ACK反馈的时延,长格式仍然是考虑到持续时间长可以保证覆盖。 NR中,考虑到系...

一个关于5G NR的博客^^ 3万+

viewpager的一个错误

java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()' on a null object reference

shuijianbaozi的博客 483

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

m0_61961937的博客 1万+

Android HBanner 图片视频混合轮播

很多展示类的app,会使用到banner图,其中也不乏想要图片+视频混合轮播的需求,例如客显屏系统,就使用到了该种功能,下面会简单列举实现流程,结尾附带demo源码

邵旺运的博客 1424

Kubernetes CRD 系列(一):CRD 介绍

CR(Custom Resource)其实就是在 Kubernetes 中定义一个自己的资源类型,是一个具体的 “自定义 API 资源” 实例,为了能够让 Kubernetes 认识这个 CR,就需要让 Kubernetes 明白这个 CR 的宏观定义是什么,也就是需要创建所谓的 CRD(Custom Resource Definition)来表述。 可能这么说并不是太直观,换个方式表达一下,我们想要创建一个 Pod 的时候,那么会编写一个 YAML 配置,然后前两行一般会这么写: [root@l

会哭的雨@的博客 7920

ShardingSphere-JDBC-若依框架集成(SpringBoot)

ShardingSphere基础知识、ShardingSphere-JDBC如何集成进若依框架中 使用的是若依框架前后端版本、动态数据源,可自行切换,默认数据源为达梦8代理端,

编程小菜鸟的笔记 8168

【android】报错Error inflating class android.support.v4.view.ViewPager解决(附完整代码)

报错Error inflating class android.support.v4.view.ViewPager解决

CatalpaWoo的博客 2319

docker安装部署openclaw详细教程(安装、卸载、问题处理)

摘要: 本文详细介绍了使用Docker部署OpenClaw本地AI智能体框架的全流程,包括代码下载、容器化安装、交互式配置及Token设置。Docker方案解决了环境配置复杂、依赖冲突等痛点,提供开箱即用的隔离环境。教程涵盖常见错误(如EACCES权限问题、网关启动失败、设备配对需求)的解决方案,并提供了完整的卸载指南。通过Docker部署,用户可快速构建安全、一致的AI智能体开发环境,实现大模型与本地工具的高效连接。

少说,多做 4003

ViewPager使用时报错The specified child already has a parent.常见三种解决方法

最近在做公司的一个滚动广告条时使用viewpager来实现,原本觉得很简单的事居然报了个The specified child already has a parent.You must call removeView() on the child's parent first.的错误。所有可能的原因都分析了而且在instantiateItem()和destroyItem()方法中增加了各种判断但

u011339364的专栏 3484

OpenClaw Windows 安装指南

好的,我来一步一步带你在 Windows 上安装 OpenClaw。

m0_60605453的博客 549

【AI Agent系列】【阿里AgentScope框架】深入源码:Msg是如何转变成模型需要的Prompt形式的?多模态Prompt如何构建?

前面咱们学习AgentScope,在使用Agent来对话时,输入为一个 Msg 对象,不能是字符串,然后在Agent内部,会将Msg对象转换为模型接受的Prompt。那 AgentScope 如何根据 Msg 形成相应模型接收的Prompt结构的?如何使用 Msg 带入更多的参数,传递给大模型呢?

同学小张的博客 1533

Android ViewPager禁止预加载问题解决(亲测可用,欢迎留言)

最近项目需要,所以要用到禁止预加载的ViewPager,看了一下别人的博客,有几个没有重写源码,经测试发现根本不能实现禁止预加载,浪费了不少功夫,为了避免开发人员经常踩坑,我在此发表这边博客。原文地址https://www.cnblogs.com/a454892215/p/4423461.html,并进行了一下修改(注意:API 26以下和API 27有些不同,这里用的API 27),整理了LazyViewPager(就是禁止预加载ViewPager,ViewPager有的属性,它一般都有)。以下代码在项目

UrasakiNakajima的博客 5147

一般无穷积分的收敛判别法

文章目录积分里的狄屎判别法证明阿贝尔判别法总结补充:级数中的狄屎和Abel 积分里的狄屎判别法 F(u)=∫auf(x)dx在[a,+∞)F(u)=\int_a^uf(x)dx在[a,+\infty)F(u)=∫au​f(x)dx在[a,+∞)有界 x→+∞时,g(x)单减→0x\to+\infty时,g(x)单减\rightarrow0x→+∞时,g(x)单减→0 ⇒\Rightarrow⇒ ...

universe_1207的博客 1万+

viewpager的pagerAdapter的使用

先看效果图,,简单说下viewpage的pagerAdapter的几个方法的用法贴上代码 //viewpage的适配器 class MyViewPageAdapter extends PagerAdapter{ @Override public int getCount() { return mainTitlesArray.length; ...

printlndeng的博客 4万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Viewpager的PagerAdapter的使用(APP启动页)

先看效果图, 简单说下viewpage的pagerAdapter的几个方法的用法 贴上代码 //viewpage的适配器 class MyViewPageAdapter extends PagerAdapter{ @Override public int getCount() { return mainTitlesArray.length; } //判断是否是否为同一张图片,这里返回方法中的两个参数做比较就可以

weixin_42814000的博客 519

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android - ViewPager使用PagerAdapter,instantiateItem时出现IndexOutOfBoundsException

这个问题困扰我有一个礼拜了、今天终于解决之、      感谢:http://stackoverflow.com/questions/9402970/android-viewpager-throwing-indexoutofbounds-exception-when-setting-current-item      报错信息如下: 04-11 15:01:29.092: E/AndroidR

3万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android之viewpager. PagerAdapter destroyItem报错

在使用viewpager时,我们常常需要更新页面数据,处理不当会导致数组越界,从而引起页面崩溃。 如图:页面只有一个viewpager,父系一共有10页数据,“母系”只有一页数据。初始化时使用“父系”数据填充,当点击“母系”时,会请求服务器返回数据,从而更新viewpage数据源。当“父系”时滑动到第5页,这时候请求“母系”数据,请求数据后更新viewpager时PagerAdapter的des...

LVXIANGAN的专栏 3740

有关viewPager错误The application's PagerAdapter changed the adapter's contents without calling PagerAdap

今天在新的公司把上一个Android攻城狮的代码从eclipse搬到Android Studio之后,发现一个坑,首页的图片轮播报错了233。 先贴出报错信息                   java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents witho

qq_32529579的博客 1377

ViewPager适配PagerAdapter的时候 instantiateItem方法报错的处理

使用viewpager动态添加页面或者删除页面时出现了问题(java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first),在stackoverflow上找到了解决办法。(http://stackove

qq_30393319的博客 3198

Android中最常用的适配器:PagerAdapter与FragmentPagerAdapter

PagerAdapter与FragmentPagerAdapter

841

Altium Designer 17安装全指南:从环境初始化到PCB编辑器可用

Altium Designer(AD)是电子设计自动化(EDA)领域的核心PCB设计工具,其安装并非简单复制文件,而是涉及Windows系统服务注册、硬件加速配置、库路径初始化等底层环境构建。AD17作为经典稳定版本,依赖Visual C++ 2013、DirectX 11.1及完整组件集成,缺失任一环节将导致原理图加载失败、PCB边框无法识别、3D视图黑屏或Gerber导出异常等工程级问题。掌握安装前系统准备(关闭Defender、清理注册表、禁用快速启动)、安装中关键选项(Custom模式、PCB Ad

weixin_34417183的博客 442

PagerAdapter的用法

该适配器可以让图片产生滑动效果,需要写入需要的图片,创建一个集合将图片放进去 views = new ArrayList<>(); ImageView view1 = new ImageView(this); ImageView view2 = new ImageView(this); ImageView view3 = new ImageView(this); view1.setBackgroundResource(R.dr

maoyusan的博客 2161

PagerAdapter changed the adapter‘s contents without calling notifyDataSetChanged

The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#`notifyDataSetChanged`! 1. 异常发生的地方 ViewPager.java void populate(int newCurrentItem) { ... final int pageLimit = mOffscreenPageLimit;

gacmy的专栏 2621

android无法实例化服务器,android – 无法实例化类型PagerAdapter

我正在使用片段和pageview尝试使用水平寻呼机,我得到以下错误:Cannot instantiate the type PagerAdapter.我知道PagerAdapter是一个抽象类,所以我创建了一个继承自PagerAdapter并使用它的新类.但没有解决它.这是我的代码:主要活动进口import java.util.List;import java.util.Vector;import...

weixin_42527178的博客 323

The application's PagerAdapter changed the adapter's contents without calling Pagapter

今天学习的时候爆出了这样一个关于ViewPager的错误: The application's PagerAdapter changed the adapter's contents without calling  PagerAdapter#notifyDataSetChanged! 找了好长时间发现是我将数据源的初始化放在了加载适配器之后: private void

hey_girls的博客 798
上一篇: ViewPager,RadioGroup,FragmentManager 详解 <三> Fragment,ViewPager 和PagerTabStrip
下一篇: ViewPager,RadioGroup,FragmentManager 详解 <四> Fragment,ViewPager 和TabLayout
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值