Alguém poderia me ajudar a criar uma interface de ouvinte definida pelo usuário com alguns trechos de código?
134
Crie um novo arquivo:
MyListener.java
:
public interface MyListener {
// you can define any parameter as per your requirement
public void callback(View view, String result);
}
Na sua atividade, implemente a interface:
MyActivity.java
:
public class MyActivity extends Activity implements MyListener {
@override
public void onCreate(){
MyButton m = new MyButton(this);
}
// method is invoked when MyButton is clicked
@override
public void callback(View view, String result) {
// do your stuff here
}
}
Na sua classe personalizada, chame a interface quando necessário:
MyButton.java
:
public class MyButton {
MyListener ml;
// constructor
MyButton(MyListener ml) {
//Setting the listener
this.ml = ml;
}
public void MyLogicToIntimateOthers() {
//Invoke the interface
ml.callback(this, "success");
}
}
WeakReference<>
neste caso, mas então você não pode fazer o ouvinte uma classe anônima ou qualquer coisa onde o ouvinte não tem outras referências ... então seria preferível não usá-loleia o padrão de observador
interface do ouvinte
então na sua classe diga
Event
classena sua classe de motorista
MyTestDriver
fonte
Interface
GenericAsyncTask
Dê uma olhada nisso , esta pergunta para mais detalhes.
fonte
Existem 4 etapas:
1.criar classe de interface (ouvinte)
2.usar interface na visualização 1 (definir variável)
Interface 3.implements para visualizar 2 (vista 1 usada na vista 2)
Interface 4.pass na vista 1 para ver 2
Exemplo:
Etapa 1: você precisa criar interface e função definida
Etapa 2: use esta interface na exibição
Etapa 3,4: implementa a atividade
fonte
Crie interface de ouvinte.
E crie o método setOnCustomClick em outra atividade (ou fragmento), onde você deseja aplicar seu ouvinte personalizado ......
Chame esse método da sua primeira atividade e passe a interface do ouvinte ...
fonte
No ano de 2018, não há necessidade de interfaces de ouvintes. Você tem o Android LiveData para passar o resultado desejado de volta aos componentes da interface do usuário.
Se eu pegar a resposta de Rupesh e ajustá-la para usar o LiveData, será assim:
e agora na sua classe de driver MyTestDriver:
Para obter mais informações, juntamente com exemplos de código, você pode ler minha postagem sobre ele, bem como os documentos oficiais:
Quando e por que usar o LiveData
Documentos oficiais
fonte
No Android, você pode criar uma interface como o Ouvinte, e sua Atividade a implementa, mas não acho que seja uma boa ideia. se tivermos muitos componentes para escutar as alterações de seu estado, podemos criar uma baseListener implementa a interface Listener e usar o código de tipo para lidar com eles. podemos ligar o método quando criamos um arquivo XML, por exemplo:
e o código fonte:
mas não acho que seja uma boa ideia ...
fonte
Eu fiz algo como abaixo para enviar minha classe de modelo da Segunda Atividade para a Primeira Atividade. Eu usei o LiveData para conseguir isso, com a ajuda de respostas de Rupesh e TheCodeFather.
Segunda atividade
"liveSong" é AudioListModel declarado globalmente
Chame esse método na Primeira atividade
Que isso ajude para novos exploradores como eu.
fonte
Método simples para fazer essa abordagem. Em primeiro lugar, implementa o
OnClickListeners
na sua classe Activity.Código:
fonte