Duvidas sobre classe super [RESOLVIDO]

5 respostas
androidjavamobile
G

Ola.
Estou programando para android e me deparei com a seguinte situação: Estou em uma activity e nao quero que o usuario volte ao apertar o botao voltar, pra isso eu dei um Override no OnBackPressed e mandei dar um toast instruindo o usuario no que fazer para voltar e só. Porem ele mostrava o toast e voltava e só parou quando eu comentei o super.onBackPressed(); jtenho noçoes de POO e seus pilares mais anda nao domino. Gostaria de saber oque acontece quando o super.onBackPressed(); é exercutado, oque ele faz, pra que serve, pq o codigo só funcionou do jeito que eu queria quando eu o comentei. Senhores, obrigado.

@Override
public void onBackPressed() {
    Toast.makeText(this.getApplicationContext(), "Ponha o dispositivo em pé para voltar", Toast.LENGTH_SHORT).show();
  //  super.onBackPressed();
}

5 Respostas

P

Super é uma referencia à “classe” mãe.

super.metodo() executa o que o metodo fazia originalmente

Util se vc quer apenas executar algo no começo ou fim do metodo original (ou fazer algo diferente em dada condição)

Comentar significa que vc sobrescreveu totalmente o metodo. Talvez assim ele deixe de apresentar as características que vc quer evitar. Leia na documentação se existem efeitos colaterais

G

Ok, deixa eu ver se entendi. Quando eu dei Override no OnBackPressed eu nao disse a jvm que deveria mostrar um toast e pronto, mais sim que deveria mostrar um toast e depois fazer oque o metodo na calsse mae faz por padrao. Ao comentar o super nao houve referencia ao metodo na classe mae e por isso quando o usuario aperta VOLTAR o app mostra apenas o toast, correto?

P

aparentemente, sim.

S

Exatamente, se vc quer o toast + voltar tem que chamar o super.onBackPressed + o codigo do seu toast =)

G

Obrigado pela ajuda!

Criado 27 de outubro de 2016
Ultima resposta 30 de out. de 2016
Respostas 5
Participantes 3