0

i m developing an GPS tracker Application. i used fragments in this Application. to locate the Myself i put a mylocation button which redirect me to the MapFragment file . but i got the NullPointerException on the moveCamera(cameraUpdate)

my error is as follows :

java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.GoogleMap.moveCamera(com.google.android.gms.maps.CameraUpdate)' on a null object reference
at aark.co.in.locateme.fragments.MapFragment.onCreateView(MapFragment.java:217)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2074)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1286)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:758)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1671)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:532)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5441)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

and here is the mapFragment.java code.

   public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle
        savedInstanceState){
            View rootview = inflater.inflate(R.layout.fragment_map, container, false);
            // Getting a reference to the AutoCompleteTextView
            mMapView = (MapView) rootview.findViewById(R.id.maps);
            mMapView.getMapAsync(onMapReadyCallback);
            mMapView.onCreate(savedInstanceState);
            dbHelper = new SQLiteHandler(getActivity());
          //   MapView mapView;
          //  ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.mapToday)).getMapAsync(onMapReadyCallback);
          //  SupportMapFragment mapFragment ;
           // ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMapAsync(onMapReadyCallback);
           // ((MapView) getSupportFragmentManager().findFragmentById(R.id.maps))


          // MapsInitializer.initialize(getActivity().getApplicationContext());
           FloatingActionButton fab = (FloatingActionButton) rootview.findViewById(R.id.fabChat);
            fab.setOnClickListener(new View.OnClickListener() {


               // @Contract("_, null -> null") — method returns null if its second argument is null @Contract("_, null -> null; _, !null -> !null") — method returns null if its second argument is null and not-null otherwise @Contract("true -> fail") — a typical assertFalse method which throws an exception if true is passed to it

                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(getActivity(), AddUserMapActivity.class);
                    startActivity(intent);
                }
            });

//        FloatingActionButton fabnav= (FloatingActionButton) rootview.findViewById(R.id.fabNav);
//        fabnav.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                showDistance();
//            }
//        });

            mMapView.onResume();// needed to get the map to display immediately

            //       try {
            //           MapsInitializer.initialize(getActivity().getApplicationContext());
            //       } catch (Exception e) {
            //           e.printStackTrace();
            //       }


            // latitude and longitude
            //Getting Current Location Here
            GPSTracker mGPS = new GPSTracker(getActivity());
            if (!mGPS.canGetLocation()) {
                mGPS.showSettingsAlert();
            } else {
                latitude = mGPS.getLatitude();
                longitude = mGPS.getLongitude();
            }

            if (latitude != 0.0 && longitude != 0.0) {
                // create marker
                MarkerOptions marker = new MarkerOptions().position(
                        new LatLng(latitude, longitude)).title("You");
                marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ROSE));
                if (marker != null) {
                    // adding marker
                    mGoogleMap.addMarker(marker);
                }
                // Changing marker icon
            }
            //Setting camera position
            //CameraPosition cameraPosition = new Builder()
              //      .target(new LatLng(latitude, longitude)).zoom(17).build();
            LatLng latLng = new LatLng(latitude, longitude);
            CameraUpdate cameraUpdate  = CameraUpdateFactory.newLatLngZoom(latLng,17);
            mGoogleMap.moveCamera(cameraUpdate);

MainActivity.java code is as follows

 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);
  //Setting Start Navigation
  aController = (AppController) getApplicationContext();

  mToolbar = (Toolbar) findViewById(R.id.toolbar);
  setSupportActionBar(mToolbar);
  getSupportActionBar().setDisplayShowHomeEnabled(true);
  drawerFragment = (FragmentDrawer)
    getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
  drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), mToolbar);
  drawerFragment.setDrawerListener(this);

  // display the first navigation drawer view on app launch
  displayView(0);
  //Setting End Navigation
  //Setting Font in Calibri
  font_calibri = Typeface.createFromAsset(getAssets(), "calibri_bold.ttf");
  txtUserName = (TextView) findViewById(R.id.txt_profile_name);
  //Intent i=getIntent();

  sharedPreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
  editor = sharedPreferences.edit();
  icprofile = (ImageView) findViewById(R.id.ic_profile);
  String stringpath = sharedPreferences.getString("key_profile_pic", "Null Value");
  String stringname = sharedPreferences.getString("key_profile_name", "Null Value");
  String stringnumber = sharedPreferences.getString("key_mobile", "Null Value");
  txtUserName.setText(stringname);
  File imgFile = new File(stringpath);
  if (imgFile.exists()) {
   Bitmap bmp = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
   Bitmap circleImage = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Bitmap.Config.ARGB_8888);
   BitmapShader shader = new BitmapShader(bmp, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
   Paint paint = new Paint();
   paint.setShader(shader);
   paint.setAntiAlias(true);
   Canvas c = new Canvas(circleImage);
   c.drawCircle(bmp.getWidth() / 2, bmp.getHeight() / 2, bmp.getWidth() / 2, paint);
   icprofile.setImageBitmap(circleImage);
  }

  icprofile.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(getApplicationContext(), ProfileActivity.class);
    startActivity(intent);

    ///Now set this bitmap on imageview
   }
  });
  if (name != null && email != null) {
   name = stringname;
   email = stringnumber;
  }


  //Checking For GPS Enabled Or Disabled
  LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

  if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
//   showGPSDisabledAlertToUser();
  } else {
   showGPSDisabledAlertToUser();
  }
  //For Fragment Stack
  //Checking Google Play Services
  name = stringname;
  email = stringnumber;
  // Make sure the device has the proper dependencies.
  GCMRegistrar.checkDevice(this);

  // Make sure the manifest was properly set - comment out this line
  // while developing the app, then uncomment it when it's ready.
  GCMRegistrar.checkManifest(this);

  registerReceiver(mHandleMessageReceiver, new IntentFilter(
    DISPLAY_MESSAGE_ACTION));

  // Get GCM registration id
  final String regId = GCMRegistrar.getRegistrationId(this);

  // Check if regid already presents
  if (regId.equals("")) {
   // Registration is not present, register now with GCM
   GCMRegistrar.register(this, SENDER_ID);
  } else {
   // Device is already registered on GCM
   if (GCMRegistrar.isRegisteredOnServer(this)) {
    // Skips registration.
    Toast.makeText(getApplicationContext(), "Already registered with GCM", Toast.LENGTH_LONG).show();
   } else {
    // Try to register again, but not in the UI thread.
    // It's also necessary to cancel the thread onDestroy(),
    // hence the use of AsyncTask instead of a raw thread.
    final Context context = this;
    mRegisterTask = new AsyncTask<Void, Void, Void>() {

     @Override
     protected Void doInBackground(Void... params) {
      // Register on our server
      // On server creates a new user
      ServerUtilities.register(context, name, email, regId);
      return null;
     }

     @Override
     protected void onPostExecute(Void result) {
      mRegisterTask = null;
     }

    };
    mRegisterTask.execute(null, null, null);
   }
  }

  // ATTENTION: This was auto-generated to implement the App Indexing API.
  // See https://g.co/AppIndexing/AndroidStudio for more information.
  client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
 }

 @Override
 public void onDrawerItemSelected(View view, int position) {
  displayView(position);
 }

 private void displayView(int position) {
  Fragment fragment = null;
  String title = getString(R.string.app_name);
  switch (position) {
   case 0:
    fragment = new HomeFragment();
    title = getString(R.string.title_home);
    break;
   case 1:
    fragment = new FriendsFragment();
    title = getString(R.string.title_friends);
    isExit = false;
    break;
   case 2:
    fragment = new MessageFragment();
    title = getString(R.string.title_messages);
    isExit = false;
    break;
   case 3:
    fragment = new MapFragment();
    title = getString(R.string.title_map);
    isExit = false;
    break;
   case 4:
    fragment = new SettingFragment();
    title = getString(R.string.title_setting);
    isExit = false;
    break;
   case 5:
    fragment = new AboutFragment();
    title = getString(R.string.title_about);
    isExit = false;
    break;
   default:
    break;
  }

could you please find the solution if any.

thank you for spending your valuable time..

0 Answers0