0

Estoy teniendo un problema con una variable que inicializo al iniciar sesión con los datos de un cliente y que además la declaro como estática, al ir navegando por la aplicación, en algunos momentos determinados (que incluso ni uso la clase) me da un error como que esa variable está nula durante la ejecución. Copio el código del error e iré actualizando con el código que precisan, llevo dos dias con este error y me tiene muy parado.

Error en LogCat:

06-17 11:36:59.174 11713-11713/com.example.agustin.festnowapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.agustin.festnowapp, PID: 11713
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.agustin.festnowapp/com.example.agustin.festnowapp.PantallaPrincipal}: java.lang.NullPointerException: Attempt to invoke virtual method 'int modelos.Cliente.getIdCliente()' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6944)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int modelos.Cliente.getIdCliente()' on a null object reference
    at com.example.agustin.festnowapp.PantallaPrincipal.onCreate(PantallaPrincipal.java:45)
    at android.app.Activity.performCreate(Activity.java:7183)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032) 
    at android.app.ActivityThread.-wrap11(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) 
    at android.os.Handler.dispatchMessage(Handler.java:105) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6944) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 
SJuan76
  • 10,771
  • 5
  • 17
  • 31
  • 2
    Posible duplicado de [¿Cuál es la solución a todos los errores NullPointerException presentes, pasados y futuros?](https://es.stackoverflow.com/questions/42977/cu%c3%a1l-es-la-soluci%c3%b3n-a-todos-los-errores-nullpointerexception-presentes-pasados) – JDev Jun 17 '19 at 09:54
  • Te recomiendo que leas [esta pregunta](https://es.stackoverflow.com/questions/42977/cu%C3%A1l-es-la-soluci%C3%B3n-a-todos-los-errores-nullpointerexception-presentes-pasados). En ella podrás ver la solución a todos los NullPointerException pasados, presentes y futuros. Un saludo. – Pablo González Jun 17 '19 at 09:50
  • Gracias Pablo, el problema es que se como solucionar los problemas de puntero nulo, pero el problema es que no se porque me da ese tipo de error en esta variable que no debería darme, cuando siendo estática se usa en otras partes y funciona llega un momento que se vuelve nula, gracias igualmente por la informacion. – Agustín Acedo Jun 17 '19 at 10:02
  • Bueno, pon un poco de código. Sobre todo alrededor de com.example.agustin.festnowapp.PantallaPrincipal línea 45. Luego cual es tu variable estática, etc. Cosas por el estilo. Mas que nada para intentar ver algo. Así, solo por un error es algo difícil. – Evgeni Enchev Jun 17 '19 at 10:38
  • @AgustínAcedo es importante agregues código para saber como instancias la clase Cliente. – Jorgesys Jun 17 '19 at 13:46
  • @AgustínAcedo, importante: en el caso del OS Android, cuando el sistema operativo requiera memoria para otras aplicaciones lo primero que se pierde son los valores de las variables "estaticas", revisa mi respuesta. – Jorgesys Jun 19 '19 at 15:12

1 Answers1

0

Es importante recordar que si declaras una variable u objeto como "estatico", en el caso del sistema operativo Android, su valor podrá cambiar a nulo cuando el sistema operativo requiera memoria para otras aplicaciones.

Cuando requiera memoria las variables, objetos declarados como estaticos son los primeros que seran cambiados a valor null, por esta razón obtendrías:

"NullPointerException: Attempt to invoke virtual method 'int modelos.Cliente.getIdCliente()' on a null object reference"

Si es indispensable que la declaración del objeto Cliente en la clase modelos sea definido como "static", debes de validar y si tiene valor null, volver a instanciar Cliente

Jorgesys
  • 103,630
  • 13
  • 52
  • 124