【发布时间】:2013-03-30 03:27:08
【问题描述】:
我正在转换一个程序以使用 Fragments,所以它现在有一个实际的 Activity,而其他一切都是一种或另一种类型的 Fragment。
所以 ErrandMapActivity 的层次结构是:
Object -> Fragment -> SupportMapFragment -> MapViewActivity -> ErrandMapActivity
对于 ErrandAssistantFreeMainActivity:
Object -> Context -> ContextWrapper -> ContextThemeWrapper -> Activity -> FragmentActivity -> ErrandAssistantMainActivity -> ErrandAssistantFreeMainActivity
所以活动加载了主要的fragmentlayout,然后加载了mapview,我看到了fragment中的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 的片段正在被加载,那么为了加载地图可能需要做什么?
【问题讨论】:
-
这段代码非常混乱。您有两个认为它们是活动的片段(
MapViewActivity、ErrandMapActivity),它们之间的关系不清楚,并且您没有活动(尽管有多个名为...Activity的事物)。因此,我不知道您要做什么,更不用说为什么它不起作用了。使用层次结构视图查看您的MapView去了哪里。 -
@CommonsWare - 我正在修改一个程序以使用片段,但不想更改所有名称。这就是为什么它们被命名为活动。
-
@JamesBlack 似乎是一种不好的做法。您(或一些不幸的同事)将来必须保持这种状态。你正在制造债务。
标签: android google-maps android-fragments