1
resposta

Erro ao fazer Cast

Estou seguindo o curso, porém não estou seguindo a risca todos os passo, estou usando nome de classes diferentes, na verdade, estou tentando criar um App diferente do curso. O problema está no Cast.

Segue o log:

09-12 17:48:41.394 5519-5519/br.mp.mprr.mprr E/AndroidRuntime: FATAL EXCEPTION: main
                                                               java.lang.ClassCastException: java.lang.String cannot be cast to br.mp.mprr.mprr.modelo.Processo
                                                                   at br.mp.mprr.mprr.MainActivity$3.onMenuItemClick(MainActivity.java:79)
                                                                   at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:144)
                                                                   at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
                                                                   at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167)
                                                                   at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:924)
                                                                   at android.widget.AdapterView.performItemClick(AdapterView.java:298)
                                                                   at android.widget.AbsListView.performItemClick(AbsListView.java:1086)
                                                                   at android.widget.AbsListView$PerformClick.run(AbsListView.java:2855)
                                                                   at android.widget.AbsListView$1.run(AbsListView.java:3529)
                                                                   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:4745)
                                                                   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:786)
                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                   at dalvik.system.NativeStart.main(Native Method)

Segue o método onde tento fazer o Cast:

@Override
    public void onCreateContextMenu(ContextMenu menu, View v, final ContextMenu.ContextMenuInfo menuInfo) {
        MenuItem deletar = menu.add("Deletar");
        deletar.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem menuItem) {
                AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
                Processo processo = (Processo) listaProcessos.getItemAtPosition(info.position);
                alert("Processo Deletado");
                return false;
            }
        });

Segue a classe Processo:

public class Processo {
    private Usuario promotor;
    private String observacao;
    private Date dataProcesso;
    private PosicaoJudiciario posicao;

    public Usuario getPromotor() {
        return promotor;
    }

    public void setPromotor(Usuario promotor) {
        this.promotor = promotor;
    }

    public String getObservacao() {
        return observacao;
    }

    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }

    public Date getDataProcesso() {
        return dataProcesso;
    }

    public void setDataProcesso(Date dataProcesso) {
        this.dataProcesso = dataProcesso;
    }

    public PosicaoJudiciario getPosicao() {
        return posicao;
    }

    public void setPosicao(PosicaoJudiciario posicao) {
        this.posicao = posicao;
    }
}

Alguma ideia do que pode está acontecendo?

1 resposta
java.lang.ClassCastException: java.lang.String cannot be cast to br.mp.mprr.mprr.modelo.Processo

Aqui ta dizendo que você ta tentando referenciar uma String através de uma variável do tipo Processo, por isso o problema de cast.

A linha que ta gerando o erro é essa => Processo processo = (Processo) listaProcessos.getItemAtPosition(info.position);.

Tenta dar uma debugada nessa parte do método.