2015-10-14 180 views
1

我在一個教程後創建了一個測試項目,並且工作正常。現在我重新安裝了我的操作系統並安裝了最新版本的android studio。CameraUpdateFactory未初始化

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()); 
      } 
     }); 
    } 
} 

我的問題是:


現在,我創建了谷歌地圖時,得到了以下錯誤

爲什麼我的應用程序失敗?這個版本有什麼不同?

+0

我不認爲你做了,但只是爲了安全起見,你沒有在模擬器中運行它,因爲它不起作用 –

+0

我在genymotion中運行這個,之前還有 – BrunoRamalho

+0

如果您有可用的設備,我強烈建議您使用該設備,因爲它可能不適用於仿真器! –

回答

1

是的,我會繼續前進,並將其作爲一個答案,以防一些卡住相同的問題。

因爲你正在處理地圖,即使在代碼很好的情況下,仿真器也可能會指出錯誤。我不是專家,但這可能是因爲地圖需要座標和模擬器沒有的東西。所以解決方案很簡單,只需將它運行到你的Android設備,它應該工作,如果你的代碼是確定的。

+1

是的,真的。讓我們希望他們能夠在emulatores上解決這個問題 – BrunoRamalho

0

經過反擊,我發現如果在模擬器中安裝GApps修復問題。現在應用程序運行沒有問題

+0

這是怎麼回事? –