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
,我在从视图中展开后设置了它的适配器,就像我尝试对按钮所做的那样,它似乎工作正常重新加载片段
并在屏幕上绘制