我正在使用Android应用,其中有4个标签位于操作栏(main_activity.xml)。
在一个标签中,我将其称为MapListFragment(map_list_fragment.xml),我必须显示两个不同的片段(一些数据的列表和地图视图表示)。所有其他选项卡都是片段,并与MapListFragment(id / main_fragments_container)放在同一个容器中。
因此,首先显示地图片段,并在底部显示按钮地图和列表。当时只显示一个片段(地图或列表),在按钮单击(地图或列表)上,您可以显示其他片段,然后再次单击按钮返回到第一个片段。这些map和list Fragment的容器是(id / fragments_container)。我通过调用FragmentTransaction上的replace()方法来更改此Fragment,并转发ActionBar TabListener用于更改选项卡的相同容器(id / main_fragments_container)。我还尝试为特别是这个选项卡创建新容器,并将其用于此选项卡中的所有操作,但我遇到了同样的问题。更改此片段效果很好,但是......
然后我在ActionBar上添加了一个按钮,它调用了新的Fragment,它应该代表添加一些数据的视图。这个片段的容器是(id / main_fragments_container)问题是,当我回到MapListFragment时,我无法获得与初始相同的行为。第一个问题是这个最好的工作实践还是应该调用Activity而不是Fragment?
当我从ActionBar按钮调用new Fragment时,我总是删除地图片段(我得到相同的结果,当我不删除时),当我回到MainFragment时,显示空白视图,虽然我调用了addToBackStack()方法。
所以我在这里遇到了很多问题,我希望我能解释其中的一些问题,有谁能知道我能尝试做些什么呢?
包含4个标签的MainActivity的XML布局。
main_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:orientation="vertical"
android:background="@android:color/white">
<LinearLayout
android:id="@+id/main_fragments_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
MapListFragment布局包含片段和两个按钮,片段是动态添加的。
map_list_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/events_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@android:color/white" >
<LinearLayout
android:id="@+id/fragments_container"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dip"
android:orientation="horizontal" >
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center|bottom"
android:orientation="horizontal" >
<Button
android:id="@+id/button_map"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@android:color/white"
style="?android:attr/buttonBarButtonStyle"/>
<Button
android:id="@+id/button_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@android:color/white"
style="?android:attr/buttonBarButtonStyle" />
</LinearLayout>