Android 片段按钮由活动';s findviewbyd而不是Fragment';s膨胀视图。findViewById

Android 片段按钮由活动';s findviewbyd而不是Fragment';s膨胀视图。findViewById,android,android-fragments,kotlin,android-activity,include,Android,Android Fragments,Kotlin,Android Activity,Include,我看到这种奇怪的行为,找不到类似的东西 因此,我有一个父级活动,里面是一个片段,我通过包含元素将其包含在父级中,然后在父级的onCreate中,创建片段,并用这个包含布局替换它(告诉我这是否正确?我使用的是FrameLayout,但随后切换到include,并为其定义了id) 活动 碎片 Fragment是正确充气的d,但是当我在onCreateView中这样做时 rootView.btn\u update\u position.setOnClickListener{ //…记录一些东西

我看到这种奇怪的行为,找不到类似的东西

因此,我有一个父级
活动
,里面是一个
片段
,我通过
包含
元素将其包含在父级中,然后在父级的
onCreate
中,创建
片段
,并用这个
包含
布局替换它(告诉我这是否正确?我使用的是
FrameLayout
,但随后切换到
include
,并为其定义了
id

活动

碎片

Fragment
正确充气的
d,但是当我在
onCreateView中这样做时

rootView.btn\u update\u position.setOnClickListener{
//…记录一些东西
}
然后按下
按钮
,它什么也不起作用?尽管大多数调查结果表明我应该
视图
充气,然后设置
onClickListener

我也试过这样做

rootView.findviewbyd(R.id.btn\u update\u位置)。setOnClickListener{
//…记录一些东西
}

val按钮=rootView.findviewbyd(R.id.btn\u更新位置)
button.setOnClickListener{
//…记录一些东西
}
但它们都不起作用

我还在
onViewCreated
中尝试了上述方法,以查看我是否没有获得引用,但没有抛出错误,也没有反应

唯一有效的就是这个

activity?.findViewById(R.id.btn\u更新位置)
?setOnClickListener{
//…记录一些东西
}
我正在试图理解为什么会发生这种情况?这可能是使用
包含
片段的问题吗

注意我不是安卓系统的专家,只是在安卓系统中做一些业余工作,所以我对安卓系统不太了解

编辑正如您所看到的,我在
片段
布局中有一个
回收视图
,我正在膨胀布局,然后设置它的适配器项,与按钮相反,它似乎工作得很好

rootView.sku\u list.adapter=adapter()

我对你想在这里做什么感到有点困惑

首先,
不会创建新视图,它只是将xml包含到父xml文件中,因此基本上它仍然在活动中,您需要活动来查找DViewById

第二,关于您的问题,FrameLayout和
之间有什么不同

使用
就像我上面所说的,它只是将xml文件添加到父文件中,主要用于重用布局(您可以在任何地方包含它)


使用官方文件中的FrameLayout:“FrameLayout设计用于在屏幕上屏蔽一个区域以显示单个项目”例如:您希望您的布局在所有屏幕上都有页眉和页脚,只有中间部分会发生变化,所以请在中间放置一个框架布局,然后为每个屏幕加载不同的视图,因为灵活的框架布局通常用于显示片段(您可以通过谷歌搜索如何使用框架布局了解更多详细信息)

我认为你应该在fragment\u customer\u detail.xml中添加一个FrameLayout,这将是我拥有的片段container,但我想知道它们之间的区别是什么?另一个不是布局?是的,所以如果我需要在片段中保留元素引用,我应该使用
FrameLayout
。我当时对通货膨胀感到困惑将
Fragment
中包含的布局展开,然后将其替换为
include
tagI可能在问题中提到过,我在
Fragment
布局中也有一个
RecyclerView
,我在从视图中展开后设置了它的适配器,就像我尝试对按钮所做的那样,它似乎工作正常重新加载
片段
并在屏幕上绘制