Hola.
Tengo un FragmentPagerAdapter el cual contiene tres Fragment con distinta información. Para pasar de uno a otro simplemente se desliza el dedo de derecha a izquierda o izquierda a derecha.
En el primer Fragment recibo un error al instanciar el mapa. Si no lo instancio el mapa se infla siguiendo las indicaciones de su xml, pero necesito instanciarlo para insertar una posición.
infoinstalacion_fragment1.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<fragment
android:id="@+id/infoinstalacion_fragment1_map"
android:layout_width="310dp"
android:layout_height="130dp"
class="com.google.android.gms.maps.SupportMapFragment" >
<TextView
android:id="@+id/tvInfoF1nombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nombre" >
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
infoInstalacionFragment1.java
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//recogemos los datos de la Activity pricipal
Bundle bundle = this.getArguments();
instalacion = (Instalacion) getArguments().getSerializable("key");
Log.e("LocAndroid", "Instalacion");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
//Creamos la View
View view = inflater.inflate(R.layout.infoinstalacion_fragment1, container, false);
mMap = ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
//retornaremos la View creada
return view;
}
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
//Los insertamos en variables
String nombre = instalacion.getNombre();
String direccion = instalacion.getDireccion();
String ciudad = instalacion.getCiudad();
int telefono = instalacion.getTelefono();
//instancioamos los TextView
tvNombre = (TextView) getActivity().findViewById(R.id.tvInfoF1nombre);
tvDireccion = (TextView) getActivity().findViewById(R.id.tvInfoF1direccion);
tvCiudad = (TextView) getActivity().findViewById(R.id.tvInfoF1ciudad);
tvTelefono = (TextView) getActivity().findViewById(R.id.tvInfoF1telefono);
//setters
tvNombre.setText(nombre);
tvDireccion.setText(direccion);
tvCiudad.setText(ciudad);
tvTelefono.setText(Integer.toString(telefono));
coorLatitud = instalacion.getCoorLatitud();
coorLongitud = instalacion.getCoorLongitud();
Log.e("Checking", "InfoInstalacionFragment1. Longitud: "+coorLongitud+" Latitud: "+coorLatitud);
}
Logcat:
03-04 15:03:20.188: E/AndroidRuntime(18881): FATAL EXCEPTION: main
03-04 15:03:20.188: E/AndroidRuntime(18881): Process: com.kirolm.instalacionesdep, PID: 18881
03-04 15:03:20.188: E/AndroidRuntime(18881): java.lang.NullPointerException
03-04 15:03:20.188: E/AndroidRuntime(18881): at com.kirolm.instalacionesdep.info.InfoInstalacionFragment1.onCreateView(InfoInstalacionFragment1.java:85)
03-04 15:03:20.188: E/AndroidRuntime(18881): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
03-04 15:03:20.188: E/AndroidRuntime(18881): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
03-04 15:03:20.188: E/AndroidRuntime(18881): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
03-04 15:03:20.188: E/AndroidRuntime(18881): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
03-04 15:03:20.188: E/AndroidRuntime(18881): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
El error esta en la siguiente linea pero no logro solucionarlo.
mMap = ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
Muchas gracias.