Android 无法对包含Google Maps Api v2的活动使用工具栏

Android 无法对包含Google Maps Api v2的活动使用工具栏,android,android-fragments,google-maps-api-2,android-toolbar,fragment-tab-host,Android,Android Fragments,Google Maps Api 2,Android Toolbar,Fragment Tab Host,我正在开发一个应用程序,我需要在顶部有一个工具栏和底部选项卡,并在其中一个选项卡中显示谷歌地图。我使用FragmentTabHost作为底部选项卡,使用Google Maps Api v2作为Google Maps,上面有一些自定义图像标记。我已经完成了在单击选项卡时显示Google Maps,但主要问题出现在这之后。我知道使用工具栏作为操作栏时,我需要使用ActionBarActivity扩展我的活动,但使用google地图时,我需要使用FragmentActivity扩展我的活动。 我已经尝

我正在开发一个应用程序,我需要在顶部有一个工具栏和底部选项卡,并在其中一个选项卡中显示谷歌地图。我使用FragmentTabHost作为底部选项卡,使用Google Maps Api v2作为Google Maps,上面有一些自定义图像标记。我已经完成了在单击选项卡时显示Google Maps,但主要问题出现在这之后。我知道使用工具栏作为操作栏时,我需要使用ActionBarActivity扩展我的活动,但使用google地图时,我需要使用FragmentActivity扩展我的活动。 我已经尝试了很多东西,但是为了在片段中获得谷歌地图的引用,我需要使用这个

SupportMapFragment supportMapFragment =
                (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map); 
googleMap = supportMapFragment.getMap();

现在,如果我让我的活动扩展ActionBarActivity,我将能够在我的活动中使用工具栏,但getSupportFragmentManager()将返回null,因为我的活动未扩展FragmentActivity。希望你们理解我的问题。非常感谢任何帮助。

如果您检查
ActionBarActivity
的源代码,您将看到
ActionBarActivity
扩展
FragmentActivity
。因此,您只需扩展
ActionBarActivity
ActionBarActivity
将适用于您,为了使您的应用程序与较低版本兼容,您应该在项目中导入
android-support-v7-appcompat
ActionBarActivity已经扩展了FragmentActivity,因此这里没有问题。getSupportFragmentManager()不应为null。你的setContentView可以吗?(询问原因)。

ActionBarActivity
已将其替换为
AppCompatActivity
。这也将
FragmentActivity
子类化,因此您可以始终像在其父类中一样执行所有操作

此外,您还可以将
FrameLayout
添加到布局
XML
,然后以编程方式在其中添加
Map
,这将提供更多的控制。 在layout.xml中添加:

<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/region_map_container" />

那么extends
FragmentActivity
?当我扩展FragmentActivity并使用工具栏作为操作栏时,代码setSupportActionBar(工具栏)给出了一个编译时错误,setSupportActionBar未定义,因为我没有使用ActionBarActivity扩展我的活动。谢谢Sajal的回答。我在片段中使用SupportMapFragment时发现了真正的问题,这就是为什么在代码SupportMapFragment SupportMapFragment=(SupportMapFragment)getSupportFragmentManager()中使用SupportMapFragment的原因;我得到的supportMapFragment为null。我现在找到了解决方案我必须使用getChildFragmentManager()而不是getSupportFragmentManager()是的,如果你想在片段中使用片段管理器,你应该使用getChildFragmentManager()而不是getSupportFragmentManager()。
FragmentManager manager = getChildFragmentManager();
SupportMapFragment mapFragment = SupportMapFragment.newInstance();
manager.beginTransaction().replace(R.id.region_map_container, mapFragment).commit();