请参阅myprevious question了解其工作原理的详细信息。
当前设置
我在扩展SherlockMapFragment
的ActionBarSherlock
(abs)库中创建了一个名为SupportMapFragment
的类。这可以很好地显示地图等,我直到现在才意识到(因为我是个白痴)以下:
我创建了一个名为mapfrag的sherlockmapfragment实例。
然后为了使用和显示这个,我调用mapfrag.newInstance()。
这实际上是在返回一个supportmappfragment实例,但是这个调用对于显示mappview是必要的。
这对于我想要实现的目标来说是一个巨大的问题,因为我正试图将我的片段添加到一个选项卡式导航栏中,但显然我不能将SupportMapFragment
添加到一个tablistener中,因为我得到了各种类转换异常等,因为它期望扩展SherlockFragment
或Fragment
。
有人能绕过这个吗?或者如果我想让自己更清楚,请直接问这个问题。
一种可能的解决方案
一种解决方案是创建自己的选项卡栏并处理Fragments
自己的事务。但是,工具已经在那里了,如果只是一个简单的修复,我真的不想这么做。
提前谢谢
最佳答案
您可以扩展sherlockfragment并自己处理mappview。这看起来像…
public class SherlockMapFragment extends SherlockFragment
{
private MapView mapView;
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
mapView = (MapView) getView().findViewById(R.id.my_map_id);
mapView.onCreate(savedInstanceState);
}
@Override
public void onResume()
{
super.onResume();
mapView.onResume();
}
@Override
public void onPause()
{
super.onPause();
mapView.onPause();
}
@Override
public void onLowMemory()
{
super.onLowMemory();
mapView.onLowMemory();
}
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
@Override
public void onDestroy()
{
super.onDestroy();
mapView.onDestroy();
}
}
没有人说你绝对必须使用supportmappfragment。新api最酷的部分之一是能够将mappview用作普通视图。
关于android - 在选项卡式导航中将ActionBarSherlock与SupportMapFragment的子类一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13763996/