5

SupportMapFragment をフラグメントに動的にロードしようとしています。これが私の onCreateView() メソッドです。

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
            View contentView = inflater.inflate(R.layout.frag_map_layout, null);
            shopDtos=ShopListFragment.shopDtos;
            fragment =SupportMapFragment.newInstance();
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.replace(R.id.map_content, fragment);
            ft.commit();
            map = fragment.getMap();
            mapMarker = map.addMarker(new MarkerOptions().position(new LatLng(0, 0))
                    .icon(BitmapDescriptorFactory
                            .fromResource(R.drawable.maps_pin)));
        return contentView;
    }

残念ながら、GoogleMap の地図はnull. マップフラグメントを動的に作成する方法について何か提案はありますか?

4

6 に答える 6

3

次のコードを使用してみてください。それは私のために働いた。

public class MapFragment extends SupportMapFragment {

    GoogleMap mapView;
    private Context context;

    @Override
    public void onCreate(Bundle arg0) {
        super.onCreate(arg0);
    }

    @Override
    public View onCreateView(LayoutInflater mInflater, ViewGroup arg1,
        Bundle arg2) {
        View view = super.onCreateView(mInflater, arg1, arg2);

        return view;
    }

    @Override
    public void onInflate(Activity arg0, AttributeSet arg1, Bundle arg2) {
        super.onInflate(arg0, arg1, arg2);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        context = getActivity();
        mapView = getMap();
    }
}
于 2014-01-24T04:49:10.970 に答える
1

この問題の最新の解決策は、代わりにgetMapAsync (OnMapReadyCallback コールバック)を使用することです。

于 2015-12-07T12:51:58.243 に答える
0
getChildFragmentManager().findFragmentById(R.id.map)

Fragment で getChildFragmentManager() を試してください。

于 2016-09-30T07:47:57.930 に答える