首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我不能findViewById包含在片段布局中的布局的子级?

在片段布局中,无法直接使用findViewById来查找布局的子级,是因为片段布局的子级并不是直接属于Activity,而是属于片段Fragment。findViewById方法是Activity中的方法,用于在Activity的布局中查找特定的视图。

在片段中,可以使用getView方法来获取片段的根视图,并通过该根视图来查找子级视图。具体操作步骤如下:

  1. 在片段的onCreateView方法中,通过LayoutInflater的inflate方法将片段的布局文件转换为视图对象,例如:
代码语言:txt
复制
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_layout, container, false);
    return rootView;
}

这里的R.layout.fragment_layout指的是片段的布局文件。

  1. 在片段的其他方法中,可以通过getView方法获取片段的根视图对象,例如:
代码语言:txt
复制
View rootView = getView();
  1. 然后,可以使用rootView对象调用findViewById方法来查找子级视图,例如:
代码语言:txt
复制
TextView textView = rootView.findViewById(R.id.text_view);

这里的R.id.text_view指的是片段布局中要查找的子级视图的id。

总结起来,不能直接使用findViewById来查找片段布局中的子级视图,而是需要通过获取片段的根视图对象,再使用该根视图对象调用findViewById方法来查找子级视图。这样可以确保在片段布局中正确地找到所需的子级视图。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Fragment初识

概述 官方API ---- Fragment是什么 Android 在 Android 3.0(API 11 引入了Fragment,主要是为了给大屏幕(如平板电脑)上更加动态和灵活 UI 设计提供支持...这特别重要,因为模块化片段让您可以通过更改片段组合方式来适应不同屏幕尺寸。 在设计可同时支持平板电脑和手机应用时,您可以在不同布局配置重复使用您片段,以根据可用屏幕空间优化用户体验。...例如,在手机上,如果不能在同一 Activity 内储存多个片段,可能必须利用单独片段来实现单窗格 UI。...如果引用是V4类,getFragmentManager( )不能使用,需要改成getSupportFragmentManager( ) ---- 创建一个Fragment 静态加载Fragment...UI控件 TextView tv = (TextView) findViewById(R.id.textview); tv.setText("在Act获取到了Fragment

1.2K20

安卓UI

- Android 应用界面 界面是布局和微件层次结构形式构建而成。布局是 ViewGroup 对象,即控制其视图在屏幕上放置方式容器。微件是 View 对象,即按钮和文本框等界面组件。...您应用必须在此文件声明其所有组件,该文件必须位于应用项目目录根目录。 - 应用资源 应用资源是指代码使用附加文件和静态内容,例如位图、布局定义、界面字符串、动画说明等。...应将各类资源放入项目 res/ 目录特定子目录。 - 布局容器 布局可定义应用界面结构(例如 Activity 界面结构)。...Fragment 和 Fragment 之间传递结果 如需将结果从子 Fragment 传递到父 Fragment,父 Fragment 在调用 setFragmentResultListener...获取对 Fragment 引用来调用片段方法。

1.4K30
  • 再看LayoutInflater,这次你可能又会有新认识

    这里不想在文章带着大家一步步追源码,这样文章看起来可能会又累又枯燥,因此就只贴出一些认为比较关键代码。...每个布局都可以包含若干个子布局,每个子布局又可以继续包含布局,以此构建出任意样式View呈现给用户。 因此,我们大致可以明白,每个布局它都是要有一个父布局。...当然也是可以,这也是为什么root参数被标为@Nullable原因。 但是如果我们inflate出来了一个没有父布局布局,又该如何去展示它呢?...而实际上则不然,它们其实是用于设置View在布局大小,也就是说,首先View必须存在于一个布局才行。...崩溃信息如下: 这个崩溃信息是在说,我们正在添加一个View,但是这个子View已经有父布局了,需要让父布局先调用removeView()移除View后才能添加。

    62400

    用 Kotlin 写 Android ,难道只有环境搭建这么简单?

    不要 findViewById 作为第一篇介绍 Kotlin 写 Android 文章,绝对不能就是 kotlin-android-extensions 插件了。...在 gradle 当中加配置: apply plugin: 'kotlin-android-extensions' 之后,我们只需要在 Activity 代码当中直接使用在布局定义 id 为...如果让大家自己实现一套机制来完成上面的功能,大家肯定会想,首先得解析一下 XML 布局文件吧,并把里面的 View 存起来,这样方便后面的查找。告诉大家,Kotlin 也是这么干!....* 几个意思?Kotlin 编译器为我们创建了一个?...注意到,这里 packageFqName 其实就是我们前面提到 kotlinx.android.synthetic.main. 不对呀,怎么创建了两个呢?

    8K00

    源码分析 | AppCompatActivity-setContentView 之大意了

    背景 故事是这样开始 有一天,发现自己写布局没有 按照想法打印 带上了莫名其妙开头 有一天,两个年轻人,不讲武德 非要告诉这是 AppCompatActivity 原因 不信...他们偷袭,显然是有备而来 大意了 没有闪 今天,要自证事实 混元门代码 第三代大弟子,打工牛 参见 熟悉为什么会这样,明明是一个普通TextView,为什么变成了MaterialTextView...顺藤摸瓜 打工人,打工魂,乃混元门… 呸,跑题了,我们进入正轨,今天非要扒了你裤衩。...为什么会知道呢?翻译啊,ohhhh。...哦呵呵呵,原来这里是对我们默认 View 进行了替换,这也就是为什么我们使用AppCompatActivity 打印出来 View 自带了前缀显示。

    34620

    Android开发笔记(七十四)布局文件优化

    include/merge 布局优化中常常用到include/merge标签,include含义类似C代码include,意思是直接把指定布局片段包含进当前布局文件。...include适用于多个布局文件存在相同xml片段,比如说相同标题栏、相同广告栏、相同进度栏等等。...include布局文件根节点可以是LinearLayout或RelativeLayout或FrameLayout,可是上级布局文件往往已经有了相同视图节点,这时布局根节点就变成冗余了,但是布局文件又必须有根节点...不要急,merge标签便是处理这个问题,merge要和include配合使用,也就是说,merge只能是include布局文件根节点,且merge无需设置额外属性。...merge标签代替了根节点LinearLayout、RelativeLayout和FrameLayout原来位置,只是告诉编译器:是个占位合并标签,不需要对布局处理;这样app在渲染UI时,只是简单合并

    1.2K30

    Android开发笔记(一百一十九)工具栏ToolBar

    Toolbar 在前面的博文《Android开发笔记(二十)顶部导航栏》,我们学习了ActionBar用法,可是ActionBar着实是不怎么好用,比如文字风格不能定制、图标不能定制,而且还存在低版本兼容性问题...为此,Android提供了加强版工具栏控件即Toolbar,因为Toolbar继承自ViewGroup,而且可在布局文件像其它布局视图一样使用,所以灵活性大大提高了。...导入android-support-v7-appcompat Toolbar包含在android-support-v7-appcompat.jar,但app工程还不能直接使用这个jar,因为v7...-appcompat是一个完整工程,jar里面大量引用了工程图片资源,所以我们要先把v7-appcompat导入为一个库工程,然后app工程再引用这个库工程。...下面是个布局例子片段: <android.support.v7.widget.Toolbar android:id="@+id/tl_head" android

    1.9K30

    Android布局优化之ViewStub、include、merge使用与源码分析

    大家好,又见面了,是你们朋友全栈君。 在开发UI布局是我们都会遇到问题,随着UI越来越多,布局重复性、复杂度也会随之增长。...此时如果通过findViewById来找my_title_parent_id这个控件,然后再查找my_title_parent_id下控件则会抛出空指针。...我们注意看注释5处,这里就解释了为什么include标签和被引入布局根元素都设置了id情况下,通过被引入根元素id来查找控件会找不到情况。...findViewById问题,注意ViewStub是否设置了inflatedId,如果设置了则需要通过inflatedId来查找目标布局根元素。...在开发过程,我们一定要尽量去深究一些常用技术点本质,这样才能避免出了问题不知如何解决窘境。追根究底才能知道为什么是这样,也是自我成长必经之路。

    1.1K20

    功能强大Android滚动控件RecyclerView

    dependencies闭中加入compile ‘com.android.support.recyclerview-v7:xx.x.x'(x是当前最新版本) 2.布局加入RecyclerView...通过setAdapter()设置适配器** 下面我们就利用代码或图片一一细说每个步骤: **第一步:在当前项目的build.gradledependencies闭中加入compile ‘com.android.support.recyclerview-v7...其实第一步咋们已经说过了,直接拖取控件到布局界面就行了。 – 那我们就去布局代码看看,你会在布局代码中发现如下代码片段: ? 小伙伴们,发现其中特点没有?...在布局文件我们需要创建一个RecyclerView子项布局,代码如下: ? 实现预览效果,我们在这里让界面实现左边是图片,右边是文字: ?...其实RecyclerView还有点击事件这里就没有写了。如果后期小伙伴们需要可以添加上去。

    99641

    Android开发之那些好用数据结构与API(二)

    在 Android开发之那些好用数据结构与API 一文中提到了Android中一些好用数据结构和API,这次继续补充几个在项目中用到好用但是不是人人都知道东东 ~~ 1、android...:digits 在Android开发,经常要设置EditText为密码显示,但是通常要求密码只能是 **字母和数字 . _ **组合,此时就可以用该属性进行过滤 <EditText...setEmptyView.png 注意 经过本人测试,如果ListView包含在某些下拉刷新框架,这样做是没有效果,应该是冲突了。...4、android:duplicateParentState="true" 该属性可以让View跟随其Parent状态。...常见使用场景是某个按钮特别小,为了设置点击事件,给其包裹一层Parent布局,将点击事件写到Parent上,如果希望被包裹按钮点击效果对应Selector继续生效的话,就可以使用它了,来个有说服力测试案例

    67160

    smartimageview&常见开源代码

    github上搜索开源框架android-smarty-imageview,下载压缩,拷贝我们之前写网络图片查看器布局。...解压下载里面的数据,找到java源码拷贝到我们项目里,这时我们可以看到这个包下面有个SmartyImageView.java自定义控件,SmartImageView是继承自ImageView 当我们在布局文件中使用...ImageView时,可以直接写,那是因为这个类是包含在android.jar里面,使用自定义时候,一定要加上名 获取SmartImageView对象,通过findViewById()方法 调用...SmartImageView对象setImageUrl(url,fallbackResource,loadingResource)方法,参数:url是String类型图片路径,另两个一个是下载失败时显示和正在下载时显示...R.id.et_path); } public void getInternetImg(View v){ SmartImageView siv=(SmartImageView) findViewById

    58240

    安卓ExpandableListView详细使用教程(附代码解析过程)

    大家好,又见面了,是你们朋友全栈君。...、实现效果   ExpandableListView又称可扩展ListView,简单来说长这个样: 每一个一布局下面又可以展开二布局。...二、实现步骤 使用ExpandableListView主要有三个步骤: 编写父布局 编写布局 适配器书写 1.编写父布局parent.xml   父布局其实很简单,就是两个并排TextView,用于展示课程名字和分数...child.xml   布局就是多个TextView列在一起,用于展示成绩详细信息: <?...getGroupView(),返回外面那层布局视图,也就是各种课程名称以及分数: getChildView(),返回布局里面的视图,也就是每门学科详细信息: GradeAdapter详细代码为

    1.1K20

    开发工具总结(1)之图文并茂全面总结上百个AS好用插件(上)

    首先,分门别类,按类型把功能类似的都放在一起。 其次,对每一个插件做了一个很精确讲解,图文并茂。另外把一些注意事项,以及优缺点都写清清楚楚,这是自己使用总结出来(极个别的除外)。...说明:   该插件可以依次通过以下6种方式来逐一尝试获取目标布局文件名,优先从高到低,一旦有一个方法获取到了有效布局文件名, 就会展示对应布局文件所有拥有 id View 控件,然后可以选择生成对应...,非常痛苦 2.当我们有一些非常棒代码需要拿到其他项目使用,但是我们发现,那个项目对第三方库使用是 有限制,我们不能使用butterknife,这时候,我们又得从注解改回findviewbyid...针对上面的两种情况,如果view比较少还好说,如果有几十个view,那么我们一个个手动删除注解, 写findviewbyid语句,简直是一场噩梦(别问我为什么知道这是噩梦) 所以,这种有规律又重复简单工作为什么不能用一个插件来实现呢...【具体能不能兼容最新dagger2,还没研究,博主对这个用少,有兴趣小伙伴欢迎去尝试,有结果之后别忘了在博客下面留言告诉一声,感谢大家。】 ?

    97610

    安卓笔记一

    .写业务逻辑 1.通过布局文件对控件配置id,在activity可以获取控件对象,Edittext Button findViewById(int id); 2.为按钮设置点击事件...获取到 要拨打的号码 首先要 找到 文本框     EditText et_number = (EditText)findViewById(R.id.et_number);     String number...在布局文件为控件添加一个onclick属性,在布局对应Activity写一个一onclick属性值为名方法,要public,传一个View类型参数。比较适合做简单测试。...padding:当前控件控件相对于当前控件四周间距。 2.相对布局 RelativeLayout 都是从左上角开始布局,要控制位置需要设置每个控件相对于其他控件位置。...:垂直居中 layout_centerInParent:位于父窗体中间 3.帧布局 FrameLayout 帧布局控件都是一层一层向上叠加

    67010

    Android使用TextInputLayout创建登陆页面

    把主activity命名为LoginActivity,它布局文件命名为activity_login.xml。...它显示了一个“欢迎”文字(可以很容易替换成logo什么)与两个EditText元素,一个是为用户名准备,一个是为密码准备布局还包含了一个触发登陆流程按钮。背景颜色是扁平风格灰色。...一个单一EditText 在输入文字时候会隐藏hint,而被包含在TextInputLayoutEditText则会让hint变成一个在EditText上方浮动标签。...TextInputLayout只是一个容器,但是和LinearLayout和ScrollView不同,你可以使用一个特殊方法获得元素,getEditText,不需要使用findViewById。...这直接影响到布局大小,增加底部padding为错误标签让出空间。在setError设置错误消息之前开启这个功能意味着在显示错误时候布局不会变化。你可以把这两个方法结合起来验证下所说

    1.6K10

    从0系统学Android--3.6 RecyclerView

    想法是这样,虽然现在 ListView 已经被 RecyclerView 替代了,但是本系列作为入门系列,力求内容完整!...首先在内部定义了一个类 ViewHolder 这个类是继承自 RecyclerView.ViewHolder ,在构造方法需要传入一个 View 参数,这个参数就是我们 RecyclerView 子项最外层布局...为什么 ListView 很难实现效果在 RecyclerView 上这么轻松就实现了呢?...当然如果你子项布局宽度设置成很小,那么就不会缩小了,效果就是View 和 View 之间有很大空隙,导致不美观。...其实不是这样,ListView 点击事件上处理并不是那么好,setOnItemClickListener() 方法注册只是子项点击事件,如果想点击线里面的某一个按钮,通过这种方式就没法直接实现了

    84320

    Android性能优化系列之布局优化

    ,本篇博客,就来总结一下UI布局优化相关技巧。...("new Title"); 那么使用findViewById(R.id.my_foot_parent_id)为什么会报空指针呢?...我们注意看注释5处,这里就解释了为什么include标签和被引入布局根元素都设置了id情况下,通过被引入根元素id来查找控件会找不到情况。...注意这里对ViewStub实例进行了一个非空判断,这是因为ViewStub在XML定义id只在一开始有效,一旦ViewStub中指定布局加载之后,这个id也就失败了,那么此时findViewById...某布局作为布局被其他布局include时,使用merge当作该布局顶节点,这样在被引入时顶结点会自动被忽略,而将其节点全部合并到主布局

    1K20

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券