我正在尝试使用googlemapsandroidapi v2中的一个mappfragment和一个相机预览。我需要能够在相机预览和地图碎片之间切换,但我不能让它工作。
对于相机预览,我从example guide复制了camera preview类。当我想查看相机预览时,我使用

CameraPreview mPreview = new CameraPreview(this);
addContentView(mPreview, new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));

当我不使用mappfragment时,这很好。
对于MapFragment,我已经通过
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >


    <fragment
        android:id="@+id/map"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment" />

</LinearLayout>

没有摄像检查,效果很好。我可以使用(例如用于隐藏)隐藏和取消隐藏映射片段:
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.hide(map_fragment);
ft.commit();

但是,当我尝试同时使用两者时,问题就来了,即隐藏映射片段,然后将camerapreview实例添加到我的活动中。隐藏不起作用,而且似乎映射片段以某种方式劫持了camerapreview并占据了优先权。一个奇怪的特性是,如果我强迫屏幕进入睡眠状态,然后唤醒它,当它唤醒时,camerapreview就在那里。如果我反过来做,即先添加CamerapReview,然后隐藏MapFragment,则行为相同。
仅供参考:我正在运行Android版本4.1.1的三星Galaxy Note 2 LTE上测试该应用程序。
有人能告诉我我做错了什么吗?

最佳答案

在camerapreview上使用setzorderontop(boolean),就像mpreview.setzorderontop(true);。
对我有用。

10-08 02:31