无法启动活动ComponentInfo {}:java.lang.NullPointerException

时间:2015-03-14 22:49:05

标签: android google-maps

我尝试使用google map v2组件在onNavigationDrawerItemSelected上启动片段,但是当我运行该应用时出现此错误:

  

java.lang.RuntimeException:无法启动活动ComponentInfo   {com.juangaviria.juangaviriaconsulta /   com.juangaviria.juangaviriaconsulta.menuLateral}:   显示java.lang.NullPointerException

为什么?

代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.actividad_mapa);
    setUpMapIfNeeded();
    //buildGoogleApiClient();

    MySupportMapFragment customMapFragment = ((MySupportMapFragment) getFragmentManager().findFragmentById(R.id.map));
    mMap = customMapFragment.getMap();

    FrameLayout fram_map = (FrameLayout) getView().findViewById(R.id.fram_map);
    btn_draw_State = (Button) getView().findViewById(R.id.btn_draw_State);
    btnEnviarPoligono = (Button) getView().findViewById(R.id.btnEnviarPoligono);


    customMapFragment.setOnDragListener(new MapWrapperLayout.OnDragListener() {

        @Override
        public void onDrag(MotionEvent motionEvent) {
            Log.i("ON_DRAG", "X:" + String.valueOf(motionEvent.getX()));
            Log.i("ON_DRAG", "Y:" + String.valueOf(motionEvent.getY()));

            float x = motionEvent.getX();
            float y = motionEvent.getY();

            int x_co = Integer.parseInt(String.valueOf(Math.round(x)));
            int y_co = Integer.parseInt(String.valueOf(Math.round(y)));

            projection = mMap.getProjection();
            Point x_y_points = new Point(x_co, y_co);
            LatLng latLng = mMap.getProjection().fromScreenLocation(x_y_points);
            latitude = latLng.latitude;
            longitude = latLng.longitude;

            Log.i("ON_DRAG", "lat:" + latitude);
            Log.i("ON_DRAG", "long:" + longitude);

            // Handle motion event:
        }
    });

    btn_draw_State.setText("Inactivo");
    btn_draw_State.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (Is_MAP_Moveable != true) {
                Is_MAP_Moveable = true;
                btn_draw_State.setText("Dibujo Activo");
            } else {
                Is_MAP_Moveable = false;
                btn_draw_State.setText("Dibujo Inactivo");
                btnEnviarPoligono.setEnabled(false);
            }
        }
    });

    btnEnviarPoligono.setEnabled(false);
    btnEnviarPoligono.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
            String puntosPoligono = "";
            LatLng obtener;

            for (int i = 0 ; i < val.size() ; i++ )
            {
                obtener = (LatLng) val.get(i);
                puntosPoligono += Integer.toString(i)+" => "+Double.toString(obtener.latitude);
                puntosPoligono += " , "+Double.toString(obtener.longitude);
                puntosPoligono += "\n";
            }
            Log.e("Puntos del poligono: ", puntosPoligono);


        }
    });


    fram_map.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            float x = event.getX();
            float y = event.getY();

            int x_co = Math.round(x);
            int y_co = Math.round(y);

            projection = mMap.getProjection();
            Point x_y_points = new Point(x_co, y_co);

            LatLng latLng = mMap.getProjection().fromScreenLocation(x_y_points);
            latitude = latLng.latitude;

            longitude = latLng.longitude;

            int eventaction = event.getAction();
            switch (eventaction) {
                case MotionEvent.ACTION_DOWN:
                    // finger touches the screen
                    val.clear();
                    mMap.clear();
                    val.add(new LatLng(latitude, longitude));
                    break;

                case MotionEvent.ACTION_MOVE:
                    // finger moves on the screen
                    Draw_Polyline();
                    val.add(new LatLng(latitude, longitude));
                    break;

                case MotionEvent.ACTION_UP:
                    // finger leaves the screen
                    Draw_Map();
                    break;
            }

            if (Is_MAP_Moveable == true) {
                return true;

            } else {
                return false;
            }
        }
    });

    LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);

    if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
        Toast.makeText(getActivity(), "GPS esta activado", Toast.LENGTH_SHORT).show();
    }else{
        showGPSDisabledAlertToUser();
    }

}

View rootView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    rootView = inflater.inflate(R.layout.actividad_mapa,container,false);
    return rootView;
}

public void onNavigationDrawerItemSelected(int position) {

    Fragment objFragment = null;
    switch (position) {
        case 0:
            objFragment = new FragmentUsuario();
        break;
        case 1:
            objFragment = new FragmentFavoritos();
        break;
        case 2:
            objFragment = new FragmentPublicacion();
        break;

    }


    // update the main content by replacing fragments
    FragmentManager fragmentManager = getFragmentManager();
    fragmentManager
            .beginTransaction()
            .replace(R.id.container,
                    objFragment)
                    .commit();
}

1 个答案:

答案 0 :(得分:0)

您的课程必须延长FragmentActivityActionBarActivity而不是Fragment。请确认