CameraUpdateFactory未初始化

时间:2015-10-14 19:32:15

标签: java android android-studio

我在一个教程后创建了一个测试项目并且工作正常。现在我重新安装了我的操作系统并安装了最新版本的android studio 现在我在创建谷歌地图时遇到以下错误:

java.lang.NullPointerException: CameraUpdateFactory is not initialized

我的清单:

<uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="........."/>

在这里我的片段:

public class ZooMapFragment extends SupportMapFragment {
    public static ZooMapFragment getInstance() {
        ZooMapFragment fragment = new ZooMapFragment();
        return fragment;
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);


        CameraPosition position = CameraPosition.builder()
                .target(new LatLng(39.7500, -104.9500))
                .zoom(16f)
                .bearing(0.0f)
                .tilt(0.0f)
                .build();

        getMap().animateCamera(CameraUpdateFactory.newCameraPosition(position), null);
        getMap().setMapType(GoogleMap.MAP_TYPE_HYBRID);
        getMap().setTrafficEnabled(true);
        getMap().getUiSettings().setZoomControlsEnabled(true);

        MarkerOptions options = new MarkerOptions().position(new LatLng(39.7500, -104.9500));
        options.title("ZoO");
        options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE));
        getMap().addMarker(options);

        getMap().setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                marker.showInfoWindow();
                return  true;
            }
        });

        RestAdapter adapter = new RestAdapter.Builder()
                .setEndpoint(getString(R.string.pins_feed))
                .build();

        PinsApiInterface pinsApiInterface = adapter.create(PinsApiInterface.class);
        pinsApiInterface.getStreams(new Callback<List<Pin>>() {
            @Override
            public void success(List<Pin> pins, Response response) {
                if (pins == null || pins.isEmpty() || !isAdded())
                    return;

                for (Pin pin : pins) {
                    Log.e("Zoo", pin.getName());
                    MarkerOptions options = new MarkerOptions().position(new LatLng(pin.getLatitude(), pin.getLongitude()));
                    options.title(pin.getName());
                    options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
                    getMap().addMarker(options);
                }
            }

            @Override
            public void failure(RetrofitError error) {
                Log.e("Log", "Retrofit error: " + error.getMessage());
            }
        });
    }
}

我的问题是:

为什么我的应用程序失败了?这个版本可能有什么不同?

2 个答案:

答案 0 :(得分:1)

是的我会继续发布并作为答案,以防有些人遇到同样的问题。

因为您正在处理地图,所以即使在代码很好的情况下,模拟器也可能指出错误。我不是专家,但这可能是因为地图需要坐标和模拟器不具备的东西。因此解决方案很简单,只需将其运行到您的Android设备即可,如果您的代码正常,它应该可以正常工作。

答案 1 :(得分:0)

在与此作斗争后,我发现如果在模拟器中安装GApps可以解决问题。现在应用程序正在运行而没有问题