我添加了一个片段
transaction.add(R.id.content, fragment, null);
我需要从这个片段开始一个新的片段。但是要做到这一点,我需要知道第一个片段的容器视图id(在我的例子中是R.id.content)。我怎么才能得到这个?
我可以直接使用这个id,但是我想fragment不应该知道关于父Activity的这种细节。例如,在这种情况下,在另一个Activity中使用这个fragment是不可能的。
从另一个片段“开始”片段可能是一个不好的做法,所有片段处理逻辑都应该由Activity本身处理?但是创建彼此开始的片段的良好序列似乎非常有用(例如detalView-〉moreDetailView-〉evenMoreDetailView)。
5条答案
按热度按时间but5z9lq1#
您可以通过调用
kcwpcxri2#
我不知道我是否完全理解你的问题,但是你在onCreateView中得到容器,我想你可以把它藏在一个局部变量中。
06odsfpq3#
我认为有一种更标准的方法来访问视图,而不是使用
我假设您使用的是一个呈现列表片段的MainActivity,它可以在单击某个条目时呈现另一个列表片段,以此类推。我假设您已经选择用您呈现的列表片段的内容替换MainActivity的主视图。
因为每个列表片段都托管在MainActivity中,所以您始终可以访问MainActivity的视图。
上面的示例假设您有一个在MainActivity中设置的XML布局资源,调用XML资源R.layout.activity_main,其中有一个ID为R.id.content_view的FrameLayout。这是我采用的方法。我在这里展示的示例是我在应用中实际编写的一个更简单的版本。
顺便说一句,我的IntelliJ版本(版本1.0.1)警告我
可能会掷回NullPointerException。
jchrr9hc4#
假设您在Activity类中有Fragment示例
mCurrentFragment
。您可以通过cyvaqqii5#
Kotlin版本
可以将其添加到“hand-dandy”扩展名中:
那就把身份证拿来