entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Android- Error al reiniciar Aplicación

Tengo una clase que extiende de PreferenceFragment y cuando el usuario hace un cambio deseo reiniciar la app, pero recibo el siguiente error:

    FATAL EXCEPTION: main
Process: com.kirolm.instalacionesdep, PID: 22668
java.lang.NullPointerException
at com.kirolm.instalacionesdep.PreferenceFragment.restartApplication(PreferenceFragment.java:42)
at com.kirolm.instalacionesdep.PreferenceFragment.onSharedPreferenceChanged(PreferenceFragment.java:37)
at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:475)
at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:385)
at android.preference.Preference.tryCommit(Preference.java:1380)
at android.preference.Preference.persistString(Preference.java:1413)
at android.preference.ListPreference.setValue(ListPreference.java:139)
at android.preference.ListPreference.onDialogClosed(ListPreference.java:274)
at android.preference.DialogPreference.onDismiss(DialogPreference.java:390)
at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1238)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
at dalvik.system.NativeStart.main(Native Method)

Este es mi código java:

    public class PreferenceFragment extends android.preference.PreferenceFragment implements OnPreferenceChangeListener,     
OnPreferenceClickListener,OnSharedPreferenceChangeListener{
    public Preferences prefs;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
        prefs.registerOnSharedPreferenceChangeListener(this);

    }
    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
        // TODO Auto-generated method stub
        //reiniciar la Activity con el nuevo idioma selecionado
        restartApplication();

    }
    private void restartApplication() {
        // TODO Auto-generated method stub
        Intent intent = getActivity().getIntent();
        getActivity().finish();
        getActivity().startActivity(intent);

    }

    @Override
    public boolean onPreferenceClick(Preference preference) {
        // TODO Auto-generated method stub
        return false;
    }
    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        // TODO Auto-generated method stub

        return false;
    }
}

Alguna idea?

Gracias

1 Respuesta

1voto

Mogwai Puntos250

Prueba con algo como esto :

Intent i = getBaseContext().getPackageManager()
             .getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

Espero que te ayude.
Un saludo!

0voto

egoitz_gonzalez comentado

Sigue apareciendo el error y muriendo la app. Lo corioso es que la aplicación se kuelga a la segunda. lo explico con un ejemplo.

Situación inicial:
1.estado de la configuración: 1

  1. Cambio a estado 0
    Todo ok.
  2. Cambio a estado 1 (La app se cierra).

Y lo mismo pasa si el estado inicial era 0. Es decir, el error ocurre a la segunda vez que se cambia la configuración.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta