【问题标题】:Android Google Map xml R.id undefined in fragmentAndroid Google Map xml R.id在片段中未定义
【发布时间】:2015-02-22 19:57:46
【问题描述】:

我正在开发一个使用带有导航抽屉的活动的应用程序。我的抽屉里有两个碎片,其中一个是谷歌地图。

在地图片段类中我想初始化GoogleMap对象对地图做一些事情,但是在我通过inflater初始化视图后的onCreateView中,我的应用在R类中找不到id来初始化google地图。

我通过以下方式从活动中调用片段:

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>

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" />

地图片段类:

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;
	}

行内:

mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);

R.id.map 未定义 Eclipse 给出“无法解析类型”。

有些东西不见了,或者我的整个概念有问题?

谢谢你,编码愉快!

【问题讨论】:

    标签: android google-maps android-layout android-fragments


    【解决方案1】:

    我通过修改行解决了这个问题:

     mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.googleMap);

    mapFragment = (MapFragment) getChildFragmentManager().findFragmentById(R.id.googleMap);

    这很奇怪,因为 R.id.googleMap 仍未定义,但对象已正确创建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 2023-03-14
      • 2013-07-18
      • 1970-01-01
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多