我正在开发一个使用导航抽屉活动的应用程序。我在抽屉里有两个片段,其中一个是谷歌地图。
在地图片段类中,我想初始化GoogleMap对象以对地图执行某些操作,但在通过inflater初始化视图后的onCreateView中,我的应用程序在R类中找不到要初始化的ID谷歌地图。
我通过以下方式调用活动中的片段:
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.mainContent, map, Map.class.getSimpleName());
fragmentTransaction.addToBackStack(Map.class.getSimpleName());
fragmentTransaction.commit();

容器xml:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/mainContent"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
<ListView
android:id="@+id/drawerList"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/background_color" >
</ListView>
</android.support.v4.widget.DrawerLayout>
&#13;
layout_fragment_map.xml:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
&#13;
Map片段类:
public class Map extends Fragment {
private View view;
private MapFragment mapFragment;
private GoogleMap googleMap;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (view != null) {
ViewGroup parent = (ViewGroup) view.getParent();
if (parent != null)
parent.removeView(view);
}
try {
view = inflater.inflate(R.layout.layout_fragment_map, container, false);
} catch (InflateException e) {
/* map is already there, just return view as it is */
}
mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
googleMap = mapFragment.getMap();
return view;
}
&#13;
在行中:
mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
&#13;
R.id.map未定义Eclipse提供&#34;无法解析类型&#34;。
缺少某些东西或我的整个概念都有问题?
谢谢你,编码愉快!
答案 0 :(得分:0)
我通过修改行来解决了这个问题:
mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.googleMap);
带
mapFragment = (MapFragment) getChildFragmentManager().findFragmentById(R.id.googleMap);
这很奇怪,因为R.id.googleMap仍然未定义,但对象被正确创建。