2015-10-14 3 views
1

У меня есть один тестовый проект, созданный после одного учебника и работающий правильно. Теперь я переустановил мой os и установил последнюю версию Android-студии.
А теперь я получил следующее сообщение об ошибке при создании карты Google: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

да, правда. давайте надеемся, что они исправят это на эмуляторах – BrunoRamalho

0

После борьбы с этим я обнаружил, что при установке GApps в эмуляторе исправляется проблема. Теперь приложение работает без проблем

+0

Как это может быть ответ? !!!! –

Смежные вопросы