动态按钮具有两个功能ANDROID

时间:2014-02-28 18:47:53

标签: android button dynamic options

我有一个动态按钮,由可以改变的变量创建。我希望这些按钮有两个功能。我做了一个选项,但我不知道如何实现其他选项。

我第一次单击按钮时,我调用了一个可以执行某些操作的功能,第二次单击同一个按钮我想要执行另一个操作。我想用所有创建的动态按钮重复此操作。

我的代码是:

 LinearLayout buttonsLayout = (LinearLayout)findViewById(R.id.linearlayoutUp);

         for(int i=0;i<drawView.getNumeroMallas();i++){

                Button buttonMalla = new Button(this);
                buttonMalla.setText("Malla "+(i+1));
                buttonMalla.setId(i+1);

                final int index = i;

                buttonMalla.setOnClickListener(new OnClickListener() {
                   public void onClick(View v) {

                       Malla malla = drawView.getMalla(index);
                       drawView.paintMallaSelected(malla);


                   }

                        }
                    });
                    buttonsLayout.addView(buttonMalla);

             }


    }

1 个答案:

答案 0 :(得分:2)

编辑 - 非常重要:

我再次重新启动您的代码,您可以使用getTag / setTag来记住按钮的最后状态(我错过了for部分,抱歉!)

for(int i=0;i<drawView.getNumeroMallas();i++){

    Button buttonMalla = new Button(this);
    buttonMalla.setText("Malla "+(i+1));
    buttonMalla.setId(i+1);
    buttonMaila.setTag(Boolean.FALSE);

然后在setOnClickListener

if (((Boolean)v.getTag()) == Boolean.TRUE)
{
    // Do first action
    v.setTag(Boolean.FALSE);
}
else
{
    // Do second action
    v.setTag(Boolean.TRUE);
}

一个想法可能是使用变量来知道哪个是最后一个动作。

布尔变量

private boolean action = false;

如果action为false,请执行第一件事并将其设置为true。如果是,则执行第二个操作并将其设置为false。 它应该出去任何方法(类的全局)

这样的东西
private boolean action;
buttonMalla.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {

        if (action == true)
        {
            // Do first action
        }
        else
        {
            // Do second action
        }

        action = !action;

        Malla malla = drawView.getMalla(index);
        drawView.paintMallaSelected(malla);


    }

}
});

无论如何,如果它做了一些重要的事情,你应该更好地管理按钮(示例按钮动作不是基于布尔变量,而是基于特定状态。)时间之前,我建立了一个“全选”和“取消全部”功能一个应用程序,我检查用户是否已手动取消选择让按钮再次像“选择”一样行动..我希望我给你一个想法。

无论如何,布尔变量是最直接的方法。