Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Persistencia SQlite

Boa tarde, estou fazendo o curso de Android, e tem uma aula que eu estou com uma dúvida, vou tentar explicar. Na aula 5, com o nome de Persistência com SQLite, com o professor Felipe. Na aula anterior a essa, era uma moça(esqueci o nome) que estava dando a aula, porém na aula 5 em questão, muda o professor, mas a aplicação é a mesma. Mas, não é exatamente a mesma aplicação. Os códigos estão diferentes. Quando eu terminei a aula de numero 4, o programa rodava sem problemas, porém, apos seguir a aula de numero 5(pela segunda vez para tentar ver se errei em algo), percebi que tem alguns códigos diferentes. Então, quando o professor vai armazenar pela primeira vez os alunos no banco, ele clica no menu "NOVO", e o dele abre sem problemas, mas o meu da um erro com a seguinte mensagem: "Unfortunately, CadastroCaelum has stopped." E a aplicação fecha. E eu não sei de onde é o problema, já alterei partes do meu código de acordo com o do Prof. Felipe, porém continua o mesmo erro. Imagino que na hora de ele fazer a aplicação, ele fez algo de forma diferente do da Professora, e por conta disso deu esse erro. Não sei se ajuda, mas parece que da uma, "FATAL EXEPTION: main" quando olha no LogCat. Será que tem como me ajudar? Desde já agradeço pela atenção. Desculpa pelo email enorme. :)

6 respostas

Oi Hiago,

que bom que você deu uma olhada no LogCat para procurar o erro!

Além dessa primeira linha ("FATAL EXEPTION: main"), você poderia colocar toda a stacktrace que apareceu abaixo dessa linha? Dessa forma, podemos ajudá-lo.

Abraço.

06-18 15:22:25.722: E/AndroidRuntime(510): FATAL EXCEPTION: main
06-18 15:22:25.722: E/AndroidRuntime(510): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.caelum.cadastro/br.com.caelum.cadastro.FormularioActivity}: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.SeekBar
06-18 15:22:25.722: E/AndroidRuntime(510):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
06-18 15:22:25.722: E/AndroidRuntime(510):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
06-18 15:22:25.722: E/AndroidRuntime(510):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
06-18 15:22:25.722: E/AndroidRuntime(510):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
06-18 15:22:25.722: E/AndroidRuntime(510):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-18 15:22:25.722: E/AndroidRuntime(510):     at android.os.Looper.loop(Looper.java:137)
06-18 15:22:25.722: E/AndroidRuntime(510):     at android.app.ActivityThread.main(ActivityThread.java:4424)
06-18 15:22:25.722: E/AndroidRuntime(510):     at java.lang.reflect.Method.invokeNative(Native Method)
06-18 15:22:25.722: E/AndroidRuntime(510):     at java.lang.reflect.Method.invoke(Method.java:511)
06-18 15:22:25.722: E/AndroidRuntime(510):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-18 15:22:25.722: E/AndroidRuntime(510):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-18 15:22:25.722: E/AndroidRuntime(510):     at dalvik.system.NativeStart.main(Native Method)
06-18 15:22:25.722: E/AndroidRuntime(510): Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.SeekBar
06-18 15:22:25.722: E/AndroidRuntime(510):     at br.com.caelum.cadastro.FormularioHelper.<init>(FormularioHelper.java:22)
06-18 15:22:25.722: E/AndroidRuntime(510):     at br.com.caelum.cadastro.FormularioActivity.onCreate(FormularioActivity.java:25)
06-18 15:22:25.722: E/AndroidRuntime(510):     at android.app.Activity.performCreate(Activity.java:4466)
06-18 15:22:25.722: E/AndroidRuntime(510):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
06-18 15:22:25.722: E/AndroidRuntime(510):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
06-18 15:22:25.722: E/AndroidRuntime(510):     ... 11 more

essa foi toda menssagem de erro.

solução!

Hiago,

lendo a stacktrace com calma, podemos ver a seguinte mensagem:

Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.SeekBar

Isso significa que em algum lugar do seu código você está fazendo algo como:

SeekBar meuSeekBar = (SeekBar) findViewById(R.id.meuId);

Para um elemento com essa cara no seu XML:

<TextView
    android:id="@+id/meuId"/>

Veja que ele é um TextView, mas no seu código java você "trocou as bolas" e fez um cast para SeekBar.

Agora, precisamos saber onde isso está acontecendo... Basta continuar a ler a stacktrace:

at br.com.caelum.cadastro.FormularioHelper.<init>(FormularioHelper.java:22)

Ou seja, exatamente na linha 22 do seu FormularioHelper, você está fazendo um casting meio estranho ao fazer um findViewById.

Dê uma olhada no seu código e veja se não é isso. ;)

Abraço.

Nossa caraaa!!!! que mancada gigantesca! Eu não consegui perceber de jeito nenhum. O id tava no TextView, e não no SeekBar, por isso que tava dando essa zica. Brigadão cara! ... Eu acho demais programação cara, gosto mesmo, mas é um lance mais dificil do que qualquer outra área a meu ver. Mas é o que eu mais gostei. To curtindo demais Android, e como eu já estava aprendendo Java, casou perfeito. Você parece manjar bastante, no começo você teve dificuldade? Alguma dica, ou conselho? Por que as vezes da vontade ate de desistir. Mas não farei isso não. Novamente, vlw pela atenção brother.

Qualquer coisa parece difícil no começo. É nossa determinação e vontade de aprender que faz a diferença. ;)

Com certeza tive dificuldades no começo e até hoje tem muitas coisas que estudo e falo: "Nossa, isso é complicado", mas basta se dedicar um pouquinho para transformar essa dificuldade numa facilidade.

Meu conselho pra você é: não se desanime a cada dificuldade encontrada. Veja isso como um desafio que será superado se você se dedicar.

Use o fórum para tirar dúvidas, leia a documentação do Android também e treine bastante.

Abraço.

Muito obrigado pelo conselho cara! Fez muita diferença. :D Abraço.