0
public class PlaceMapsFragment extends SupportMapFragment {
    private GoogleMap mMap;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View v = inflater.inflate(R.layout.fragment_place_maps, container,
                false);


        setUpMapIfNeeded();
        return v;
    }

    private void setUpMapIfNeeded() {
        if (mMap == null) {
            mMap = ((MapView) findViewById(R.id.map)).getMap();
            if (mMap != null) {
                setUpMap();
            }
        }
    }

    private void setUpMap() {
        mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title(
                "Marker"));
    }
}

错误

The method findViewById(int) is undefined for the type PlaceMapsFragment
4

2 回答 2

2

如果我没记错的话,所有片段都没有本地findViewById()方法。这就是您必须使用 onCreateView() 方法的原因。

这意味着您应该更改setUpMapIfNeeded()setUpMapIfNeeded(View view)并将onCreateView()v 传递给您修改后的方法。您还需要更改mMap = ((MapView) findViewById(R.id.map)).getMap();mMap = ((MapView) view.findViewById(R.id.map)).getMap();.

于 2012-12-07T16:17:54.560 回答
1

我不确定您是否可以将该类子SupportMapFragment类化。

要获取SupportMapFragment您调用的新实例,SupportMapFragment.newInstance这将返回您的对象。

例如,如果您将其子类化并调用,PlaceMapsFragment.newInstance()您仍将返回一个SupportMapFragment对象。

如果您想以编程方式操作地图,我建议您执行以下操作。

this.mSupportMapFragment = SupportMapFragment.newInstance();
MapHandler mMapHandler = new mMapHandler(this.mSupportMapFragment.getMap());

希望这可以帮助。

于 2012-12-07T16:30:18.577 回答