【问题标题】:If one button press does something, other buttons pressed should do something else如果一个按钮按下做某事,其他按下的按钮应该做其他事情
【发布时间】:2013-05-04 09:01:58
【问题描述】:

我在一个活动中有 5 个按钮。我的代码应该如下工作: 1(正确)按钮按下它应该做一些事情。 其他4个按下,应该做点别的...... 我不想用 5 onclicklistener

if(Button1 press) {
    do something
}

else if (button2 or button3 or button4 or button5 press)
{
    something else to do
}

【问题讨论】:

  • 除非按钮非常相似,否则我真的建议使用不同的点击监听器。当您在 6 个月后重新使用它时,它会让您的代码更易于阅读和理解。
  • @GabeSechan 如果所有Buttons 都做同样的事情,那么使用一个听众更容易阅读和理解,恕我直言。如果他们做不同的事情,那就会令人​​困惑,但这里除了一个人做同样的事情
  • 就像我说的——除非它们非常相似。我只是厌倦了阅读大量看起来像 Windows 消息循环的厄运开关语句。
  • 很公平......我同意这一点。我只是说这种特殊情况非常适合一位听众和switch

标签: android button onclicklistener buttonclick


【解决方案1】:

您可以定义两个不同的点击侦听器。按钮 1 获得第一个听众,其他人获得第二个听众。希望这会有所帮助。

【讨论】:

    【解决方案2】:

    有几种方法可以做到这一点,但如果相同的 buttons 总是做同样的事情,那么你可以在你的 xml 中设置 onClick()。

    首先,为每个Button定义相同的函数

    <Button
         android:id="@+id/button1"
           ....
         android:onClick="functionName"/>
    <Button
         android:id="@+id/button2"
           ....
         android:onClick="functionName"/>
    

    然后在你的代码中

    public void functionName(View v)
    {
        switch (v.getId())   // v is the button that was clicked
        {
           case (R.id.button1):  // this is the oddball 
           ...do stuff
           break;
        default:   // this will run the same code for any button clicked that doesn't have id of button1 defined in xml
            ...do other stuff
        break;
        }
    }
    

    现在您的 ButtonsonClickListeners 不必在您的代码中定义,除非您需要使用 Button 执行其他操作

    编辑

    @prosperK 指出,较新的 ADT 将 int 传递给 switch 会导致错误,因此如果是这种情况,您可能需要 if/elselink to SO post about this

    【讨论】:

    【解决方案3】:

    你为什么不这样做:

    final Button button1 = (Button) findViewById(R.id.button1);
    final Button button2 = (Button) findViewById(R.id.button2);
    final Button button3 = (Button) findViewById(R.id.button3);
    final Button button4 = (Button) findViewById(R.id.button4);
    final Button button5 = (Button) findViewById(R.id.button5);
    
    OnClickListener listener = new OnClickListener() {
        @Override
        public void onClick(View v) {
            if (v.equals(button1)) {
                // do something
            } else {
                // do something else
            }
        }
    };
    
    button1.setOnClickListener(listener);
    button2.setOnClickListener(listener);
    button3.setOnClickListener(listener);
    button4.setOnClickListener(listener);
    button5.setOnClickListener(listener);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-06
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 2019-02-24
      • 1970-01-01
      相关资源
      最近更新 更多