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() メソッドを使用する必要がある理由です。

これは、変更したメソッドに v を変更setUpMapIfNeeded()setUpMapIfNeeded(View view)onCreateView()渡す必要があることを意味します。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 に答える