I have a activity
that is the menu and in the onCreate()
I have:
PedirTaxiFragment pedirTaxiActivity = new PedirTaxiFragment();
getSupportFragmentManager().beginTransaction().add(R.id.content_frame, pedirTaxiActivity).commit();
When you start fragment
go correctly and when you try to open another fragment
within fragment
works correctly.
But then when I open from the menu (probe with add
and replace
):
PedirTaxiFragment pedirTaxiFragment = new PedirTaxiFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, pedirTaxiFragment).commit();
When trying to open fragment
within fragment
method getFragmentManager
is null then the application stops, how can I solve this problem?
From the menu it is called as follows:
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_pedir_taxi) {
PedirTaxiFragment pedirTaxiFragment = new PedirTaxiFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, pedirTaxiFragment).commit();
} else if (id == R.id.nav_viajes_realizados) {
ViajesTabFragment viajesTabFragment = new ViajesTabFragment();
getSupportFragmentManager().beginTransaction().add(R.id.content_frame, viajesTabFragment).commit();
} else if (id == R.id.nav_cerrar_session) {
Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
if(status.isSuccess()) {
SingletonUsuario.getInstance().setUsuario(null);
SingletonUsuario.getInstance().setmGoogleApiClient(null);
finish();
}
}
});
} else if (id == R.id.nav_share) {
} else if (id == R.id.nav_send) {
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
Stack trace:
11-18 16:44:09.778 385-408/? E/NotificationService: Ignoring notification with icon==0: Notification(pri=0 contentView=null vibrate=null sound=null defaults=0x0 flags=0x62 kind=[null])
11-18 16:44:50.098 1692-1692/? E/LSApp_App: Sending Message to Handler (com.motorola.contextual.virtualsensor.locationsensor.LocationDetection$MessageHandler) {210fed70}: msg :1010002
11-18 16:44:51.998 25920-25920/? E/UncaughtException: java.lang.NullPointerException
at com.system.sumo.retaxi.view.pasajero.PedirTaxiFragment.getPlaceAutocompleteDialogFragment(PedirTaxiFragment.java:216)
at com.system.sumo.retaxi.view.pasajero.PedirTaxiFragment.access$600(PedirTaxiFragment.java:85)
at com.system.sumo.retaxi.view.pasajero.PedirTaxiFragment$3.onClick(PedirTaxiFragment.java:260)
at android.view.View.performClick(View.java:4091)
at android.view.View$PerformClick.run(View.java:17036)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5031)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
at dalvik.system.NativeStart.main(Native Method)
11-18 16:44:52.248 25920-25920/? E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at com.system.sumo.retaxi.view.pasajero.PedirTaxiFragment.getPlaceAutocompleteDialogFragment(PedirTaxiFragment.java:216)
at com.system.sumo.retaxi.view.pasajero.PedirTaxiFragment.access$600(PedirTaxiFragment.java:85)
at com.system.sumo.retaxi.view.pasajero.PedirTaxiFragment$3.onClick(PedirTaxiFragment.java:260)
at android.view.View.performClick(View.java:4091)
at android.view.View$PerformClick.run(View.java:17036)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5031)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
at dalvik.system.NativeStart.main(Native Method)
11-18 16:44:55.198 1692-1692/? E/LSApp_App: Sending Message to Handler (com.motorola.contextual.virtualsensor.locationsensor.LocationDetection$MessageHandler) {210fed70}: msg :1010002
11-18 16:45:00.138 1692-1692/? E/LSApp_App: Sending Message to Handler (com.motorola.contextual.virtualsensor.locationsensor.LocationDetection$MessageHandler) {210fed70}: msg :1010002
Within HacerTaxiFragment I have the following method:
private void getPlaceAutocompleteDialogFragment(final int direccion, String texto) {
ViajeSqliteDao viajeSqliteDao = new ViajeSqliteDao();
List<PlaceAutoComplete> direcciones = null;
try {
direcciones = viajeSqliteDao.recoveryDistinct(getActivity());
} catch (Exception e) {
e.printStackTrace();
}
CustomPlaceAutocompleteFragment c = CustomPlaceAutocompleteFragment.newInstance(direccion, texto, direcciones, new CustomPlaceAutocompleteFragment.OnListViewPlaceItemSelected() {
@Override
public void placeAutocomplete(final PlaceAutoComplete place) {
if(place.getPuntoDesde() == null && place.getPuntoHasta() == null) {
Places.GeoDataApi.getPlaceById(mGoogleApiClient, place.getPlaceID())
.setResultCallback(new ResultCallback<PlaceBuffer>() {
@Override
public void onResult(PlaceBuffer places) {
if (places.getStatus().isSuccess() && places.getCount() > 0) {
LatLng lugar = places.get(0).getLatLng();
if (direccion == DIRECCION_DESDE) {
tvTextDesde.setText(place.getPlaceDesc());
addMarkerDesde(lugar);
} else {
tvTextHasta.setText(place.getPlaceDesc());
if (markerHasta == null) {
MarkerOptions markerOptions = new MarkerOptions().position(lugar).title(getString(R.string.hasta));
markerHasta = map.addMarker(markerOptions);
} else {
markerHasta.setPosition(lugar);
}
animateCameraToPoint(markerHasta.getPosition());
}
}
places.release();
}
});
}else{
if (direccion == DIRECCION_DESDE) {
tvTextDesde.setText(place.getPlaceDesc());
addMarkerDesde(place.getPuntoDesde());
} else {
tvTextHasta.setText(place.getPlaceDesc());
if (markerHasta == null) {
MarkerOptions markerOptions = new MarkerOptions().position(place.getPuntoHasta()).title(getString(R.string.hasta));
markerHasta = map.addMarker(markerOptions);
} else {
markerHasta.setPosition(place.getPuntoHasta());
}
animateCameraToPoint(markerHasta.getPosition());
}
}
}
});
c.show(getFragmentManager(), "");
}
The line that bursts is the last
c.show(getFragmentManager(), "");
because getFragmentManager () returns null