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

Erro no projeto

Estou com um erro no meu projeto?


08-22 17:19:33.097 20204-20204/com.example.guilherme.agentaaluno E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                   Process: com.example.guilherme.agentaaluno, PID: 20204
                                                                                   java.lang.RuntimeException: Unable to resume activity {com.example.guilherme.agentaaluno/com.example.guilherme.agentaaluno.ListaAlunosActivity}: java.lang.IllegalArgumentException: Missing either @GET URL or @Url parameter.
                                                                                       for method AlunoService.lista
                                                                                       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3429)
                                                                                       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3469)
                                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2732)
                                                                                       at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
                                                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                       at android.os.Looper.loop(Looper.java:154)
                                                                                       at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                                                                    Caused by: java.lang.IllegalArgumentException: Missing either @GET URL or @Url parameter.
                                                                                       for method AlunoService.lista
                                                                                       at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:752)
                                                                                       at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:743)
                                                                                       at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:208)
                                                                                       at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170)
                                                                                       at retrofit2.Retrofit$1.invoke(Retrofit.java:147)
                                                                                       at java.lang.reflect.Proxy.invoke(Proxy.java:813)
                                                                                       at $Proxy1.lista(Unknown Source)
                                                                                       at com.example.guilherme.agentaaluno.ListaAlunosActivity.onResume(ListaAlunosActivity.java:87)
                                                                                       at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1269)
                                                                                       at android.app.Activity.performResume(Activity.java:6783)
                                                                                       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3406)
                                                                                           ... 10 more

Alguem sabe com resolver este erro?

5 respostas

Seu erro está na ListaAlunosActivity e ta falando isso, Missing either @GET URL or @Url parameter.

Revise o código com o do professor e olha se nao esqueceu alguma url ou coloque seu código aqui

Aqui o codigo ListaAlunosActivity:

public class ListaAlunosActivity extends AppCompatActivity {

    private ListView listaAlunos;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista_alunos);

        listaAlunos = (ListView) findViewById(R.id.lista_aluno);

        listaAlunos.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> lista, View item, int position, long id) {

                Aluno aluno = (Aluno) listaAlunos.getItemAtPosition(position);
                Intent intentFormulario = new Intent(ListaAlunosActivity.this, formularioActivity.class);
                intentFormulario.putExtra("aluno", aluno);
                startActivity(intentFormulario);
            }

        });

        Button novoAluno = (Button) findViewById(R.id.novo_aluno);
        novoAluno.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intentVaiProFormulario = new Intent(ListaAlunosActivity.this, formularioActivity.class);
                startActivity(intentVaiProFormulario);
            }

        });

        registerForContextMenu(listaAlunos);
    }

    private void carregaLista() {
        AlunoDAO dao = new AlunoDAO(this);
        List<Aluno> alunos = dao.buscaAluno();

        for (Aluno aluno : alunos){
            Log.i("id do aluno", String.valueOf(aluno.getId()));
        }

        dao.close();

        AlunosAdapter adapter = new AlunosAdapter(this, alunos);
        listaAlunos.setAdapter(adapter);
    }

    @Override
    protected void onResume() {
        super.onResume();

        Call<AlunoSync> call = new RetrofitInicializador().getAlunoService().lista();

        call.enqueue(new Callback<AlunoSync>() {

            @Override
            public void onResponse(Call<AlunoSync> call, Response<AlunoSync> response) {
                AlunoSync alunoSync = response.body();
                AlunoDAO dao = new AlunoDAO(ListaAlunosActivity.this);
                dao.sincroniza(alunoSync.getAlunos());
                dao.close();
                carregaLista();
            }

            @Override
            public void onFailure(Call<AlunoSync> call, Throwable t) {
                Log.e("onFailure chamado", t.getMessage());
            }
        });

        carregaLista();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_lista_aluno, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()){
            case R.id.menu_enviar_notas:
                new EnviaAlunosTask(this).execute();
            break;

            case R.id.menu_baixar_provas:
                Intent vaiParaProvas = new Intent(this, ProvasActivity.class);
                startActivity(vaiParaProvas);
                break;

            case R.id.menu_maps:
                Intent vaiParaMaps = new Intent(this, MapsActivity.class);
                startActivity(vaiParaMaps);
                break;

        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, final ContextMenu.ContextMenuInfo menuInfo) {  // criando metodo para selecionar e deletar o alunos

        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
        final Aluno aluno = (Aluno) listaAlunos.getItemAtPosition(info.position);

        MenuItem itemLigar = menu.add("Ligar para aluno");

        itemLigar.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {

                if (ActivityCompat.checkSelfPermission(ListaAlunosActivity.this, android.Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {

                    ActivityCompat.requestPermissions(ListaAlunosActivity.this, new String[]{android.Manifest.permission.CALL_PHONE}, 123);

                }else {

                    Intent intentLigar = new Intent(Intent.ACTION_CALL);
                    intentLigar.setData(Uri.parse("tel: " + aluno.getTelefone()));
                    startActivity(intentLigar);

                }

                return false;
            }
        });

        MenuItem itemSMS = menu.add("Mandar sms do aluno");
        Intent intentSMS = new Intent(Intent.ACTION_VIEW);
        intentSMS.setData(Uri.parse("sms: " + aluno.getTelefone()));
        itemSMS.setIntent(intentSMS);

        MenuItem itemMapa = menu.add("Achar no mapa");
        Intent intentMapa = new Intent(Intent.ACTION_VIEW);
        intentMapa.setData(Uri.parse("geo:0,0?q= " + aluno.getEndereco()));
        itemMapa.setIntent(intentMapa);

        MenuItem itemSite = menu.add("Visitar site do aluno");
        Intent intentSite = new Intent(Intent.ACTION_VIEW);

        String site = aluno.getSite();
        if (!site.startsWith("http://")){
             site = "http://" + site;
        }

        intentSite.setData(Uri.parse(site));
        itemSite.setIntent(intentSite);

        MenuItem deletar = menu.add("Deletar");
        deletar.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {

           @Override
           public boolean onMenuItemClick(MenuItem item) {

               AlunoDAO dao = new AlunoDAO(ListaAlunosActivity.this);
               dao.deletar(aluno);
               dao.close();

               carregaLista();
               return false;

           }

       });
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

A tem um detalhe o erro que esta monstrando no ListaAlunosActivity e:

 Call<AlunoSync> call = new RetrofitInicializador().getAlunoService().lista();

O que eu estou fazendo de errado?

Oi Guilherme, tudo bem?

Pelo o que tudo indica a falha está em não enviar a URL para a annotation @GET do seu AlunoService, confere se está enviando realmente a URL dentro dela. Se for o caso, compartilhe o código do AlunoService, pois dessa maneira eu posso verificar qual é o detalhe que está acontecendo.

[]s

Já escobrir qual erá o problema é que faltava no codigo ("aluno") no:

 @GET
    Call<AlunoSync> lista();
solução!

Oi Guilherme, observe que a assinatura que tem o @GET não tem a URL "aluno", portanto, basta apenas você deixar da seguinte maneira:

@GET("aluno")
Call<AlunoSync> lista();

[]s