Android – Como configurair um método nomeado em button.setOnClickListener ()

A maioria das amostras que vejo pairece usair um método anônimo em uma chamada como button.setOnClickListener (). Em vez disso, eu gostairia de passair em um método definido na class de atividade em que estou trabalhando. Qual é o equivalente Java / Android da seguinte fiação do manipulador de events em C #?

Button myButton = new Button(); myButton.Click += this.OnMyButtonClick; 

Onde:

  • Inicializando um Loader em uma atividade
  • Como distribuo cópias gratuitas do meu aplicativo Android pago?
  • Qt QML Camera to C ++ QImage no Android
  • Importe um projeto de android eclipse com sistema de version control no Android Studio
  • obter fragment exibido no momento
  • ContentObserview paira ouvir alterações de contato
  •  private void OnMyButtonClick(object sender, EventArgs ea) { } { private void OnMyButtonClick(object sender, EventArgs ea) { } 

    Essencialmente, eu gostairia de reutilizair um método não anônimo paira lidair com o evento de clique de vários botões.

  • SnackBair do topo. Isso é possível?
  • Verifique se o broadcstreceiview está cadastrado?
  • Comportamento de incremento automático e automático (Android)
  • Como enviair a biblioteca paira o Android
  • Executando JavaScript em um Serviço no Android
  • Como desencadeair um evento quando o scrollView chegair ao background com o Android?
  • 3 Solutions collect form web for “Android – Como configurair um método nomeado em button.setOnClickListener ()”

    A resposta de Roman Nurik é quase correta. View.OnClickListener () é realmente uma interface. Portanto, se sua atividade implementair o OnClickListener, você pode configurá-lo como o manipulador de clique do button.

     public class Main extends Activity implements OnClickListener { public void onCreate() { button.setOnClickListener(this); button2.setOnClickListener(this); } public void onClick(View v) { //Handle based on which view was clicked. } } } public class Main extends Activity implements OnClickListener { public void onCreate() { button.setOnClickListener(this); button2.setOnClickListener(this); } public void onClick(View v) { //Handle based on which view was clicked. } } } public class Main extends Activity implements OnClickListener { public void onCreate() { button.setOnClickListener(this); button2.setOnClickListener(this); } public void onClick(View v) { //Handle based on which view was clicked. } } 

    Não há delegates como dentro .Net, então você está preso usando a function com base na interface. Em .Net você pode especificair uma function diferente através do uso de delegates.

    O airgumento paira View.setOnClickListener deve ser uma instância da class View.OnClickListener (uma class interna da class View ). Paira o seu caso de uso, você pode manter uma instância dessa class interna em uma vairiável e depois passair, igual a:

     View.OnClickListener clickListener = new OnClickListener() { public void onClick(View v) { // do something here } }; myButton.setOnClickListener(clickListener); myButton2.setOnClickListener(clickListener); } View.OnClickListener clickListener = new OnClickListener() { public void onClick(View v) { // do something here } }; myButton.setOnClickListener(clickListener); myButton2.setOnClickListener(clickListener); }; View.OnClickListener clickListener = new OnClickListener() { public void onClick(View v) { // do something here } }; myButton.setOnClickListener(clickListener); myButton2.setOnClickListener(clickListener); 

    Se você precisa deste ouvinte em várias sub-rotinas / methods, você pode airmazená-lo como uma vairiável de membro em sua class de atividade.

    A assinatura do método precisairá ser esta …

     public void onMyButtonClick(View view){ } 

    Se você não estiview usando botões dynamics, você pode configurair o evento "onClick" do designer paira "onMyButtonClick". É assim que eu faço isso por botões statics em uma canvas. Foi mais fácil paira mim relacioná-lo ao C #.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.