为什么findViewById()在这里不能作为getActivity()。findViewById()使用?

为什么findViewById()在这里不能作为getActivity()。findViewById()使用?,第1张

为什么findViewById()在这里不能作为getActivity()。findViewById()使用?

在这段代码中,当我使用TextView text =(TextView)getActivity()。findViewById(R.id.text1)

然后我的应用程序崩溃了,Logcat说这是由以下原因引起的:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法’android.view.View
android.view.Window.findViewById(int)’

findViewById()
上的
Activity
从根视图(所谓的“装饰视图”)和横穿可用的小部件和容器,寻找一个ID匹配的树开始。因此,
findViewById()
在上调用
Activity
只会发现属于整体活动视图层次结构的视图。

但是,您的

inflate()
呼叫不会将膨胀的内容附加
RelativeLayout
到活动视图层次结构。这是预期的。当片段本身被附加时,这些视图将被附加到活动视图层次结构中
onCreateView()
。结果,当您
从内部 调用
findViewById()
活动
onCreateView()
,它找不到您的
TextView
,因为该活动
TextView
仅由片段管理,还不是活动视图层次结构的一部分。

findViewById()
View
ViewGroup
从开始
View
ViewGroup
与横梁可用的widget和容器,找一个ID匹配的树。在
RelativeLayout
访问你的
TextView
,所以当你打电话
findViewById()
RelativeLayout
,你膨胀,它的工作原理。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5565177.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-14
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存