Java CameraUpdateFactory未初始化

Java CameraUpdateFactory未初始化,java,android,android-studio,Java,Android,Android Studio,我有一个测试项目创建后,一个教程和工作正常。现在我重新安装了操作系统,并安装了最新版本的android studio。 现在我在创建谷歌地图时遇到了以下错误: java.lang.NullPointerException: CameraUpdateFactory is not initialized 我的舱单: <uses-feature android:glEsVersion="0x00020000" android:required="true"/&g

我有一个测试项目创建后,一个教程和工作正常。现在我重新安装了操作系统,并安装了最新版本的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());
            }
        });
    }
}
公共类ZooMapFragment扩展了SupportMapFragment{
公共静态ZooMapFragment getInstance(){
ZooMapFragment fragment=新的ZooMapFragment();
返回片段;
}
@凌驾
已创建视图上的公共void(视图,捆绑保存状态){
super.onViewCreated(视图,savedInstanceState);
CameraPosition位置=CameraPosition.builder()
.目标(新拉特林(39.7500,-104.9500))
.zoom(16f)
.轴承(0.0f)
.倾斜(0.0f)
.build();
getMap().animateCamera(CameraUpdateFactory.newCameraPosition(position),null);
getMap().setMapType(GoogleMap.MAP\u TYPE\u HYBRID);
getMap().setTrafficEnabled(true);
getMap().getUiSettings().setZoomControlsEnabled(true);
MarkerOptions选项=新MarkerOptions().位置(新车床(39.7500,-104.9500));
期权名称(“动物园”);
图标(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE));
getMap().addMarker(选项);
getMap().setOnMarkerClickListener(新的GoogleMap.OnMarkerClickListener(){
@凌驾
公共布尔onMarkerClick(标记){
marker.showInfoWindow();
返回true;
}
});
RestAdapter adapter=new RestAdapter.Builder()
.setEndpoint(getString(R.string.pins_feed))
.build();
PinsApiInterface PinsApiInterface=适配器.create(PinsApiInterface.class);
pinsApiInterface.getStreams(新回调(){
@凌驾
公共作废成功(列出PIN、响应){
if(pins==null | | pins.isEmpty()| |!isAdded())
返回;
用于(管脚:管脚){
Log.e(“Zoo”,pin.getName());
MarkerOptions options=newmarkeroptions().position(新车床(pin.getLatitude(),pin.getLongitude());
options.title(pin.getName());
图标(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
getMap().addMarker(选项);
}
}
@凌驾
公共无效失败(错误){
e(“Log”,“改装错误:”+error.getMessage());
}
});
}
}
我的问题是:


为什么我的申请失败了?这个版本会有什么不同呢?

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


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

与此抗争之后,我发现如果在emulator中安装GApps,问题就解决了。现在应用程序运行没有问题

我不认为你这样做了,但为了安全起见,你没有在模拟器中正确运行它,因为它不工作。我正在genymotion中运行这个,之前也是如果你有可用的设备,我强烈建议你使用它,因为它可能无法与模拟器一起工作!是的,它能工作,我刚用了一个旧的安卓,它能在地图上工作。你知道为什么AVD或genymotion不工作吗?我补充了一个答案,如果你想接受,因为这解决了你的问题,我会很高兴的