我尝试使用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();
}
答案 0 :(得分:0)
您的课程必须延长FragmentActivity
或ActionBarActivity
而不是Fragment
。请确认