请注意,您不需要使用自定义Fragment
子类必须使用 Maps V2。如果您的片段只是纯粹的地图,您可以创建MapFragment
or SupportMapFragment
从活动中进行配置并在那里进行配置。
您甚至不需要创建某种SherlockMapFragment
能够让地图成为基于 ActionBarSherlock 的应用程序的一部分。常规的SupportMapFragment
工作得很好。
如果您确实希望在片段中拥有更多商业智慧,and如果您使用 ActionBarSherlock,and有问题的业务逻辑需要执行与 ActionBarSherlock 相关的操作(例如,向操作栏提供操作项),then只有这样你才需要担心有某种SherlockMapFragment
.
我可以确认这个要点包含一个工作SherlockMapFragment
。请注意,它进入com.actionbarsherlock.app
包,因为它需要对 ActionBarSherlock 的其余部分进行一些受包保护的访问。
然后您可以对其进行子类化,例如创建一个MyMapFragment
:
public class MyMapFragment extends SherlockMapFragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (getMap() != null) {
Log.d(getClass().getSimpleName(), "Map ready for use!");
}
}
}
你必须要小心打电话的时间getMap()
——太快了,它会回来的null
. onActivityCreated()
尽管您可以自由地进行实验,但似乎是一个相当安全的时间。
然后,你只需使用MyMapFragment
无论你会使用什么地方SupportMapFragment
:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.commonsware.android.mapsv2.sherlock.MyMapFragment"/>
这是完整的项目包含上述代码。