0

我有按钮事件侦听器,其中一些操作很好。即使我没有按下那个按钮,我也想执行那个事件监听器,我的意思是像执行一个普通的方法。因为我不想复制和粘贴相同的代码。我该怎么做?

谢谢!

4

4 回答 4

2

打电话

View.performClick();
于 2013-05-15T00:27:21.747 回答
2

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

Button button = (Button) findViewById(R.id.mybutton);
button.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    // do stuff here
  }
});

相反,向您的 Activity 添加一个方法,例如private void doButtonStuff(). 然后设置你OnClickListneronClick方法如下所示:

public void onClick(View v) {
  doButtonStuff();
}

现在您可以调用doButtonStuff()而无需触发侦听器。

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

Button button = ...
button.performClick()

这会触发附加的 OnClickListener,并使其看起来和听起来像单击了按钮。不过,我认为将代码提取到方法中听起来像是一个更好的解决方案。

于 2013-05-15T00:11:39.053 回答
1

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

于 2013-05-15T00:00:29.353 回答
0

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

buttonName.doClick();

并不是

buttonName.performClick();
于 2015-07-24T23:24:59.030 回答