Java 如何调用按钮事件侦听器。连点击都没有?

Java 如何调用按钮事件侦听器。连点击都没有?,java,android,performance,android-emulator,event-listener,Java,Android,Performance,Android Emulator,Event Listener,我有一个按钮事件监听器,里面有一些动作,效果很好。我想执行那个事件监听器,即使我没有按那个按钮,我的意思是像执行一个普通的方法一样。因为我不想复制和粘贴相同的代码。我怎么做 谢谢大家! 如果您想这样做,最好的方法是将放置在eventlistener内部的所有操作放在一个方法中,然后在eventlistener内部和外部随时调用此方法。这是最好的方法,因此您可以随时随地使用此操作。希望这有帮助 如果您想这样做,最好的方法是将放置在eventlistener内部的所有操作放在一个方法中,然后在eve

我有一个按钮事件监听器,里面有一些动作,效果很好。我想执行那个事件监听器,即使我没有按那个按钮,我的意思是像执行一个普通的方法一样。因为我不想复制和粘贴相同的代码。我怎么做


谢谢大家!

如果您想这样做,最好的方法是将放置在eventlistener内部的所有操作放在一个方法中,然后在eventlistener内部和外部随时调用此方法。这是最好的方法,因此您可以随时随地使用此操作。希望这有帮助

如果您想这样做,最好的方法是将放置在eventlistener内部的所有操作放在一个方法中,然后在eventlistener内部和外部随时调用此方法。这是最好的方法,因此您可以随时随地使用此操作。希望这有帮助

您创建的匿名类可以访问周围类中的方法。我假设您有一个包含以下代码的活动:

Button button = (Button) findViewById(R.id.mybutton);
button.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    // do stuff here
  }
});
public void onClick(View v) {
  doButtonStuff();
}
相反,在活动中添加一个方法,比如说
private void dobuttonstaff()
。然后设置
OnClickListner
,使
onClick
方法如下所示:

Button button = (Button) findViewById(R.id.mybutton);
button.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    // do stuff here
  }
});
public void onClick(View v) {
  doButtonStuff();
}
现在您可以调用
dobuttonstaff()
,而无需触发侦听器

或者,您可以通过编程方式单击按钮:

Button button = ...
button.performClick()

这将激发附加的OnClickListener,并使其看起来和听起来像是单击了按钮。不过,我认为将代码提取到方法中听起来更适合您的情况。

您创建的匿名类可以访问周围类中的方法。我假设您有一个包含以下代码的活动:

Button button = (Button) findViewById(R.id.mybutton);
button.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    // do stuff here
  }
});
public void onClick(View v) {
  doButtonStuff();
}
相反,在活动中添加一个方法,比如说
private void dobuttonstaff()
。然后设置
OnClickListner
,使
onClick
方法如下所示:

Button button = (Button) findViewById(R.id.mybutton);
button.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    // do stuff here
  }
});
public void onClick(View v) {
  doButtonStuff();
}
现在您可以调用
dobuttonstaff()
,而无需触发侦听器

或者,您可以通过编程方式单击按钮:

Button button = ...
button.performClick()
这将激发附加的OnClickListener,并使其看起来和听起来像是单击了按钮。不过,我认为将代码提取到方法中听起来更适合您的情况。

只需调用

View.performClick();
就打电话

View.performClick();

在Java8中,我发现编程方式的“单击”是:

buttonName.doClick();
而不是

buttonName.performClick();

在Java8中,我发现编程方式的“单击”是:

buttonName.doClick();
而不是

buttonName.performClick();

您可以将EventListener声明为一个显式类(而不是像您可能正在做的那样,声明为一个匿名内部类)。从那里,您可以从引用代码的任何地方调用代码。我将尝试。谢谢@rondahlgren您可以将EventListener声明为显式类(而不是您可能正在做的匿名内部类)。从那里,您可以从引用代码的任何地方调用代码。我将尝试。感谢@RonDahlgrenfor性能更好创建一个方法并调用它,但现在performClick()正是我需要的。感谢@matt gilesfor performance更好创建一个方法并调用它,但现在performClick()正是我需要的。谢谢@matt giles