我有一个活动,上面已经有很多元素,我想在活动上打开一个片段。
我想使用片段而不是活动,以便可以传递一些无法序列化或可解析的对象。
到目前为止,我设法通过执行以下操作来做到这一点:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:visibility="gone"/>
<RelativeLayout
android:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
.
.
.
在我的活动中,我只是将fragment_container
更改为VISIBLE,然后执行片段事务以在其中添加片段,同时还将具有我活动的所有视图的main_container
设置为GONE。 / p>
我知道这不是一个很好的解决方案,我一直在考虑将main_container
中的所有视图移动到一个新片段,以便可以将一个或另一个容器替换。
在活动顶部打开片段的最佳实践是什么?
答案 0 :(得分:3)
我使用的一般经验法则:
如果使用片段,那么您的活动应该非常愚蠢。
这意味着它们本身不应包含任何视图,而仅包含用于跟踪您的片段的逻辑(可能还包括只有Activity可以管理的逻辑)。
我将获取您“活动”中当前存在的所有视图和逻辑,并将其移至单独的片段中。
然后,您可以简单地用新片段替换“标准”片段。 2个片段,干净简单。