I get a null value of getFragmentManager ()

1

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

    
asked by Emanuel Duprat 18.11.2016 в 02:51
source

1 answer

2

You must use getSupportFragmentManager() since you are using the support library:

c.show(getSupportFragmentManager(), "");
    
answered by 18.11.2016 / 21:38
source