1

我正在将一个程序转换为使用片段,所以它现在有一个实际的活动,其他一切都是一种或另一种类型的片段。

所以 ErrandMapActivity 的层次结构是:

Object -> Fragment -> SupportMapFragment -> MapViewActivity -> ErrandMapActivity

对于 ErrandAssistantFreeMainActivity:

Object -> Context -> ContextWrapper -> ContextThemeWrapper -> Activity -> FragmentActivity -> ErrandAssistantMainActivity -> ErrandAssistantFreeMainActivity

所以活动加载了主要的fragmentlayout,然后加载了mapview,我看到了片段中的textview,但地图不可见。

对于 ErrandMapActivity,它是一个 Fragment,它加载这个布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:id="@+id/map"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    class="com.jblack.android.errandrouter.activity.ErrandMapActivity"
    android:orientation="vertical"
    map:mapType="normal"
    map:uiCompass="true"
    map:uiRotateGestures="true"
    map:uiScrollGestures="true"
    map:uiTiltGestures="true"
    map:uiZoomControls="true"
    map:uiZoomGestures="true" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

</LinearLayout>

ErrandMapActivity我有这个方法:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    mContext = getActivity().getApplicationContext();
    super.onCreateView(inflater, container, savedInstanceState);
    view = inflater.inflate(R.layout.map_fragment_layout, container,
            false);
    return view;
}

MapViewActivity.onResume我有mMapView = getMap()并且我有这些值,以验证 SupportMapFragment 是否实际实例化了一个地图:

mMapView = GoogleMap (id=830023276792)
  fQ = IGoogleMapDelegate$a$a (id=830023235664)
     b = ag (id=830023221320)
  fR = null

此应用程序中的一个 Activity 使用此布局,因此会加载此布局,然后实例化地图片段:

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

    <fragment
        android:id="@+id/fragment1"
        android:name="com.jblack.android.errandrouter.activity.ErrandMapActivity"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</FrameLayout>

所以,我知道我的扩展片段SupportMapFragment正在加载,那么为了加载地图可能需要做什么?

4

2 回答 2

2

你摆脱了你的地图。

ErrandMapActivity覆盖onCreateView()并丢弃地图(从超类获得),将其替换为 aLinearLayout和 a TextView

你不必那样做。:-)

例如,这可能有效:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // one seriously hopes that you never use mContext = getActivity().getApplicationContext();
    view = inflater.inflate(R.layout.map_fragment_layout, container,
            false);

    View whatYourParentGaveYou=super.onCreateView(inflater, view, savedInstanceState);

    view.addView(whatYourParentGaveYou, /* insert valid LinearLayout.LayoutParams here */

    return view;
}

很可能会忽略 上的所有这些map属性LinearLayout,因此请通过 Java 代码进行设置。

于 2013-03-30T13:06:36.057 回答
0

我想通了,因为它是显示的活动的黑色背景。白色背景的用户自定义主题或任何默认的白色。防爆

@dimen/actionbar_height @android:color/white

并将其设置为清单中的活动。请记住,如果您使用任何对话,此白色背景会影响背景。

于 2014-10-21T06:15:50.883 回答