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

Botão FAB sem ação

Fiz o código do FAB e depois refatorei. Acredito que deva estar faltando alguma coisa.

package br.com.viktorrocha.agendanova.ui.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import br.com.viktorrocha.agendanova.R;
import br.com.viktorrocha.agendanova.dao.AlunoDAO;


public class ListaAlunosActivity extends AppCompatActivity {


   private final AlunoDAO dao = new AlunoDAO();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista_alunos);
        setTitle("Lista de alunos");


        configuraFabNovoAluno();

    }

    private void configuraFabNovoAluno() {
        FloatingActionButton botaoNovoAluno = findViewById(R.id.activity_lista_alunos_fab_novo_aluno);
        botaoNovoAluno.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                abreFormularioAlunoActivity();
            }
        });
    }

    private void abreFormularioAlunoActivity() {
        startActivity(new Intent(this,
                FormularioAlunoActivity.class));
    }

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


        configuraLista();


    }

    private void configuraLista() {
        ListView listaDeAlunos =  findViewById(R.id.activity_lista_alunos_listview);
        listaDeAlunos.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dao.todos()));
    }
}
16 respostas

Oi Viktor, blz?

A refatoração está bem clara apenas seguindo a leitura e lógica, o que exatamente você está sentido falta?

O único detalhe de melhoria que percebi é que existem linhas em branco, portanto, basta apenas removê-las :)

02-06 14:16:53.919 21102-21102/br.com.viktorrocha.agendanova E/dalvikvm: Could not find class 'android.support.v4.view.ViewCompat$OnUnhandledKeyEventListenerWrapper', referenced from method android.support.v4.view.ViewCompat.addOnUnhandledKeyEventListener 02-06 14:16:53.919 21102-21102/br.com.viktorrocha.agendanova E/dalvikvm: Could not find class 'android.view.WindowInsets', referenced from method android.support.v4.view.ViewCompat.dispatchApplyWindowInsets 02-06 14:16:53.929 21102-21102/br.com.viktorrocha.agendanova E/dalvikvm: Could not find class 'android.view.WindowInsets', referenced from method android.support.v4.view.ViewCompat.onApplyWindowInsets 02-06 14:16:53.929 21102-21102/br.com.viktorrocha.agendanova E/dalvikvm: Could not find class 'android.view.View$OnUnhandledKeyEventListener', referenced from method android.support.v4.view.ViewCompat.removeOnUnhandledKeyEventListener 02-06 14:16:53.949 21102-21102/br.com.viktorrocha.agendanova E/dalvikvm: Could not find class 'android.support.v4.view.ViewCompat$1', referenced from method android.support.v4.view.ViewCompat.setOnApplyWindowInsetsListener 02-06 14:16:53.979 21102-21102/br.com.viktorrocha.agendanova E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering 02-06 14:16:56.909 242-242/? E/SMD: DCD OFF 02-06 14:16:59.919 242-242/? E/SMD: DCD OFF 02-06 14:17:01.449 748-1098/? E/Watchdog: !@Sync 3049 02-06 14:17:02.149 985-985/? E/StatusBar.NetworkController_dual: updateTelephonySignalStrength: slot2 iconLevel = 4 02-06 14:17:02.919 242-242/? E/SMD: DCD OFF 02-06 14:17:05.919 242-242/? E/SMD: DCD OFF 02-06 14:17:08.919 242-242/? E/SMD: DCD OFF

Oi Viktor, creio que postou no tópico errado, mas tudo bem continuar por aqui, apenas lembre de resolver o outro tópico caso queira manter a discussão por aqui.

Do teste que fiz com o seu projeto, não tive o problema que foi relatado. Inclusive, o aluno é criado como esperado. Existe alguma exception lançada ao realizar a ação que apresenta problema?

[]s

Eu testei em dois dispositivos fisicos e no logcat ele retorna isso

02-07 10:50:49.203 242-242/? E/SMD: DCD OFF
02-07 10:50:49.323 16202-16247/? E/dalvikvm: Could not find class 'az', referenced from method org.chromium.net.NetworkChangeNotifierAutoDetect.<init>
02-07 10:50:50.063 220-355/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system
02-07 10:50:50.383 16202-16258/? E/dalvikvm: Could not find class 'android.app.job.JobScheduler', referenced from method com.google.android.apps.gmm.offline.update.ah.a
02-07 10:50:50.613 16202-16233/? E/dalvikvm: Could not find class 'android.util.Rational', referenced from method com.google.android.apps.gmm.navigation.ui.guidednav.ad.a
02-07 10:50:50.883 16202-16258/? E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.google.android.apps.gmm.offline.b.a.j.k
02-07 10:50:51.103 220-355/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system
02-07 10:50:52.213 242-242/? E/SMD: DCD OFF
02-07 10:50:55.213 242-242/? E/SMD: DCD OFF
02-07 10:50:58.213 242-242/? E/SMD: DCD OFF

Estranho que nem mostra exception... Apenas para confirmar, quando vc clica no botão salvar o App fecha sozinho ou tem mais algum comportamento estranho?

Quando clico no botão ele não faz absolutamente nada. E fica "congelado" na tela de lista de alunos. Refiz algumas vezes para checar se havia algum problema no Intent, mas aparentemente tudo certo.

Agora entendi! hehe

Percebi que no seu código contido no GitHub, você não está adicionando o aluno na lista de alunos do DAO, por isso não apresenta o aluno que foi salvo por meio das informações do formulário.

Faça esse ajuste e veja se funciona.

Acabei de refazer as aulas de refatorando o código. e finalizando o fluxo. Parece tudo estar ok. Testei em dois dispositivos diferentes e o botão fab não leva para a tela de formulário.

Opa Viktor, blz? Com certeza o problema está na configuração do listener. Nele você tá pedindo para abrir a Activity de formulário?

Sempre que tiver algum problema manda o código que implementou para que seja possível analisar o possível problema :)

[]s

ListaAlunosActivity.java

package br.com.viktorrocha.agendanova.ui.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import br.com.viktorrocha.agendanova.R;
import br.com.viktorrocha.agendanova.dao.AlunoDAO;


public class ListaAlunosActivity extends AppCompatActivity {

   private static final String TITULO_APPBAR = "Lista de alunos";
   private final AlunoDAO dao = new AlunoDAO();

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

    }
    private void configuraFabNovoAluno() {
        FloatingActionButton botaoNovoAluno = findViewById(R.id.activity_lista_alunos_fab_novo_aluno);
        botaoNovoAluno.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                abreFormularioAlunoActivity();
            }
        });
    }

    private void abreFormularioAlunoActivity() {
        startActivity(new Intent(this, FormularioAlunoActivity.class));
    }

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

    private void configuraLista() {
        ListView listaDeAlunos = findViewById(R.id.activity_lista_alunos_listview);
        listaDeAlunos.setAdapter(new ArrayAdapter<>(
                this,
                android.R.layout.simple_list_item_1,
                dao.todos()));
    }

}

Com base no seu código deveria abrir sem nenhum problema. O seu GitHub está com o código atualizado? Se tiver me avisa para eu atualizar e testar aqui, dessa forma, se acontecer o problema eu investigo e te mando um feedback do que aconteceu.

[]s

Esta atualizado : https://github.com/Viktoorrocha/AgendaNova

solução!

Viktor, acabei de testar aqui e quando clica no fab está entrando no formulário, tem alguma coisa que não está acontecendo que deveria acontecer?

Professor testei em um terceiro dispositivo e funcionou. Aparentemente ocorreu algum problema problemas nos aparelhos. Obrigado pela paciência

Tranquilo Viktor, não se preocupe, estamos aqui para ajudar no que precisar. Sempre entre em contato com a gente quando tiver dúvidas.

[]s

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software