带有map的viewpager中的Fragment Transaction

时间:2013-06-04 11:58:46

标签: android map android-viewpager

我使用带有以下适配器的视图寻呼机

public class PagerAdapter extends FragmentStatePagerAdapter {
private List<Fragment> fragments=null;
private FragmentManager fragmentManager=null;
private Fragment mLeftFragment;
private Fragment mRightFragment;
String[] title={"Home","Worklist","AgencyHome"};

public PagerAdapter(FragmentManager fragmentManager,List<Fragment> fragments) 
{
    super(fragmentManager);
    this.fragments=fragments;
    this.fragmentManager=fragmentManager;
}
@Override
public Fragment getItem(int position) {
    return fragments.get(position);
}
@Override
public int getCount() {
    return fragments.size();
}


@Override
public void setPrimaryItem(ViewGroup container, int position, Object object)
{
    super.setPrimaryItem(container,0,object);
}
@Override
public  void notifyDataSetChanged()
{
    super.notifyDataSetChanged();
}
@Override
public void destroyItem(ViewGroup collection, int position, Object view) {
    fragmentManager.executePendingTransactions();
    fragmentManager.saveFragmentInstanceState(fragments.get(position));
}
@Override
public CharSequence getPageTitle(int position) 
{
    return title[position];
}
@Override
public int getItemPosition(Object object) {
 return POSITION_NONE;
}

}

在第一页我有地图。我想用列表视图替换地图,反之亦然。

地图布局

    <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/map_fragment_root_id"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
     android:id="@+id/relative"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >


        <com.google.android.gms.maps.MapView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/mapView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/Linearcategory" >

        </com.google.android.gms.maps.MapView>

和listview布局是

 <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list_fragment_root_id"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black"
    android:animateLayoutChanges="true"
    android:orientation="vertical" >
    <ListView
        android:id="@+id/mapList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/switchtolist"
        android:scrollbars="none"
        >
    </ListView>

问题是mapview将在事务

之后的列表下面

交易代码是

FragmentTransaction trans = fragmentManager.beginTransaction();
    trans.replace(R.id.map_fragment_root_id, listfragment);
    trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

    trans.addToBackStack(null);

    trans.commit();

请帮助我,因为我是片段和viewpager的新手。我正在使用这个过去一周,但无法找到解决方案。

1 个答案:

答案 0 :(得分:0)

我正在实现一个也具有该功能的应用,可以在地图和ListView之间切换。我的解决方案非常简单:我在fragment中添加了地图ListViewRelativeLayout,并在按钮点击操作时动态控制其可见性。希望这能以某种方式帮助你。