Problème: Échec du lancement de l'activité sur le bouton, à partir de MainActiviy> MapActivity.Erreur lors du démarrage de l'activité (NullPointerException) sur Android Development
P/s: Je suis ce tutoriel de carte et de changer le nom de classe et de copier tous les éléments dans mon espace de travail de projet. This Tutorial
écouteur Bouton
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(),
MapActivity.class);
startActivity(intent);}
Logcat:
07-31 02:22:58.267: E/AndroidRuntime(20784): FATAL EXCEPTION: main
07-31 02:22:58.267: E/AndroidRuntime(20784): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fa.financeassistant/com.fa.financeassistant.MapActivity}: java.lang.NullPointerException
07-31 02:22:58.267: E/AndroidRuntime(20784): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308)
07-31 02:22:58.267: E/AndroidRuntime(20784): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
07-31 02:22:58.267: E/AndroidRuntime(20784): at android.app.ActivityThread.access$600(ActivityThread.java:153)
07-31 02:22:58.267: E/AndroidRuntime(20784): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
07-31 02:22:58.267: E/AndroidRuntime(20784): at android.os.Handler.dispatchMessage(Handler.java:99)
07-31 02:22:58.267: E/AndroidRuntime(20784): at android.os.Looper.loop(Looper.java:137)
07-31 02:22:58.267: E/AndroidRuntime(20784): at android.app.ActivityThread.main(ActivityThread.java:5227)
07-31 02:22:58.267: E/AndroidRuntime(20784): at java.lang.reflect.Method.invokeNative(Native Method)
07-31 02:22:58.267: E/AndroidRuntime(20784): at java.lang.reflect.Method.invoke(Method.java:511)
07-31 02:22:58.267: E/AndroidRuntime(20784): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
07-31 02:22:58.267: E/AndroidRuntime(20784): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
07-31 02:22:58.267: E/AndroidRuntime(20784): at dalvik.system.NativeStart.main(Native Method)
07-31 02:22:58.267: E/AndroidRuntime(20784): Caused by: java.lang.NullPointerException
07-31 02:22:58.267: E/AndroidRuntime(20784): at com.fa.financeassistant.MapActivity.onCreate(MapActivity.java:46)
07-31 02:22:58.267: E/AndroidRuntime(20784): at android.app.Activity.performCreate(Activity.java:5104)
07-31 02:22:58.267: E/AndroidRuntime(20784): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
07-31 02:22:58.267: E/AndroidRuntime(20784): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2262)
07-31 02:22:58.267: E/AndroidRuntime(20784): ... 11 more
Mon MapActivity classe
package com.fa.financeassistant;
import java.util.ArrayList;
import android.R.array;
import android.app.ActionBar;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.ArrayAdapter;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MapActivity extends Activity {
private final String TAG = getClass().getSimpleName();
private GoogleMap mMap;
private String[] places;
private LocationManager locationManager;
private Location loc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapactivity);
initCompo();
places = getResources().getStringArray(R.array.places);
currentLocation();
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(ArrayAdapter.createFromResource(
this, R.array.places, android.R.layout.simple_list_item_1),
new ActionBar.OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int itemPosition,
long itemId) {
Log.e(TAG,
places[itemPosition].toLowerCase().replace("-",
"_"));
if (loc != null) {
mMap.clear();
new GetPlaces(MapActivity.this,
places[itemPosition].toLowerCase().replace(
"-", "_").replace(" ", "_")).execute();
}
return true;
}
});
}
private class GetPlaces extends AsyncTask<Void, Void, ArrayList<Place>> {
private ProgressDialog dialog;
private Context context;
private String places;
public GetPlaces(Context context, String places) {
this.context = context;
this.places = places;
}
@Override
protected void onPostExecute(ArrayList<Place> result) {
super.onPostExecute(result);
if (dialog.isShowing()) {
dialog.dismiss();
}
for (int i = 0; i < result.size(); i++) {
mMap.addMarker(new MarkerOptions()
.title(result.get(i).getName())
.position(
new LatLng(result.get(i).getLatitude(), result
.get(i).getLongitude()))
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.pin))
.snippet(result.get(i).getVicinity()));
}
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(result.get(0).getLatitude(), result
.get(0).getLongitude())) // Sets the center of the map to
// Mountain View
.zoom(14) // Sets the zoom
.tilt(30) // Sets the tilt of the camera to 30 degrees
.build(); // Creates a CameraPosition from the builder
mMap.animateCamera(CameraUpdateFactory
.newCameraPosition(cameraPosition));
}
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = new ProgressDialog(context);
dialog.setCancelable(false);
dialog.setMessage("Loading");
dialog.isIndeterminate();
dialog.show();
}
@Override
protected ArrayList<Place> doInBackground(Void... arg0) {
PlacesService service = new PlacesService(
"AIzaSyBquLw9vJPDHAZO8kzKw6ft0bPxsgBmblg");
ArrayList<Place> findPlaces = service.findPlaces(loc.getLatitude(), // 28.632808
loc.getLongitude(), places); // 77.218276
for (int i = 0; i < findPlaces.size(); i++) {
Place placeDetail = findPlaces.get(i);
Log.e(TAG, "places : " + placeDetail.getName());
}
return findPlaces;
}
}
private void initCompo() {
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
}
private void currentLocation() {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
String provider = locationManager
.getBestProvider(new Criteria(), false);
Location location = locationManager.getLastKnownLocation(provider);
if (location == null) {
locationManager.requestLocationUpdates(provider, 0, 0, listener);
} else {
loc = location;
new GetPlaces(MapActivity.this, places[0].toLowerCase().replace(
"-", "_")).execute();
Log.e(TAG, "location : " + location);
}
}
private LocationListener listener = new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onLocationChanged(Location location) {
Log.e(TAG, "location update : " + location);
loc = location;
locationManager.removeUpdates(listener);
}
};
}
SOLUTION: Autre que de la réponse donnée ci-dessous. J'applique une solution rapide en supprimant cette ligne et fonctionne comme un charme! Merci à tous ceux qui m'ont aidé. Passez une bonne journée :)
android:theme="@style/Theme.NoTitle"
À la ligne 46, qu'est-ce que c'est? – codeMagic
Assurez-vous que 'getActionBar()' ne retourne pas 'null'. Ou prenez en compte le fait qu'il peut retourner null. – MAV
Si j'ai compté, c'est 'actionBar.setNavigationMode (ActionBar.NAVIGATION_MODE_LIST);' - mettre un point d'arrêt sur cette ligne. Est-ce que actionBar est nul? – Simon