filipegarrett / Salarium

Repositório de desenvolvimento.
1 stars 0 forks source link

Fragments Recebi/Gastei precisam checar a existência de categorias #34

Closed filipegarrett closed 5 years ago

filipegarrett commented 5 years ago

Com a aplicação da persistência local do Firebase, é possível que no primeiro uso o cidadão tente preencher alguma entrada sem nenhuma categoria (seja porque o app não teve condições de baixar do Firebase, seja porque nenhuma foi criada a tempo).

Nos meus testes, ao tentar cadastrar uma despesa sem categoria selecionada enquanto offline, provoquei um NullPointerException por conta da falta de categorias dentro do spinner:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.filipewilliam.salarium, PID: 6678
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
        at com.filipewilliam.salarium.fragments.GasteiFragment.criarGasto(GasteiFragment.java:139)
        at com.filipewilliam.salarium.fragments.GasteiFragment$4.onClick(GasteiFragment.java:120)
        at android.view.View.performClick(View.java:7333)
        at android.widget.TextView.performClick(TextView.java:14160)
        at android.view.View.performClickInternal(View.java:7299)
        at android.view.View.access$3200(View.java:846)
        at android.view.View$PerformClick.run(View.java:27773)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:6990)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)

Imagino que isso possa ser contornado usando um tratamento de exceção que não chame o método de cadastro casospinnerCategoriaGasto.getSelectedItem().toString().isEmpty() retorne true.