【问题标题】:One Toggle Button on at a time一次打开一个切换按钮
【发布时间】:2016-04-26 15:57:52
【问题描述】:

我正在开发一个 Android 应用程序。我已经动态创建了一些切换按钮,它们也可以点击......

我想要实现的是在任何特定按钮上进行切换并且没问题。 但是当我打开任何其他按钮时,所有其他切换按钮都应该关闭..

就像我可以一次打开任何一个按钮一样。如果前一个按钮上的任何其他按钮应该熄灭。

有动态数量的按钮..

我不知道如何实现这一点。

这是我的代码:

   for ( int i = 0; i<sez; i++  ){

    final ToggleButton btn = new ToggleButton(xxxxx.this);
       String g  = contactList.get(i).toString();
       Pattern p = Pattern.compile("\\{([^}]*)\\}");
       Matcher m = p.matcher(g);

       while (m.find()) {

       String[] po=m.group(1).split("=");
       btn.setId(i);
       btn.setTextOn("play");
       btn.setText(po[1]);
       btn.setTextOff(po[1]);

       final int id_ = btn.getId();
       Rowlayout layout = (org.xxxx.xxx.ui.Rowlayout) findViewById(R.id.adios);
       layout.addView(btn);

  btn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
     Toast.makeText(InCallScreen.this,
    list2.get(id_) + "", Toast.LENGTH_SHORT).show();


                }
            });
  }
}

我已经花了 3 天时间但仍然卡在它上面,任何人都可以帮助我。将不胜感激....

【问题讨论】:

  • 既然你说它不是必须是 ToggleButtons,看看RadioButton和RadioGroup:stackoverflow.com/questions/10107532/…
  • 我试过这个 RadioButton 。它已经实现,但现在的要求是 ToggleButton 或简单的 Button .. 因为切换按钮在打开和关闭时会被监听两次
  • @Addi.Star 您可以使用&lt;YourToggleButton&gt;.setChecked(false) 方法将您的按钮设置为在 for 循环中取消选中
  • 一次只检查一个切换按钮吗?因为我想按下其他切换按钮,所以之前按下的切换按钮应该关闭
  • @KISHORE_ZE :我已经使用了该方法,但它与所有按钮一起使它们保持关闭状态..我只想一次打开按钮,如果按下任何其他按钮上一个按下的按钮应该熄灭

标签: android onclicklistener android-togglebutton


【解决方案1】:

这段代码非常适合我。但是,我删除了很多代码以简化答案。因此,相信您可以修改我设置的那些值,因为我不知道 sez 的值或行布局,我已将它们的值替换为 sez = 10 并将布局替换为线性布局。 无论如何,这里是代码。

public class MainActivity extends Activity 
{
        int sez;
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
            sez = 10;
            for ( int i = 0; i<sez; i++  ){

                    final ToggleButton btn = new ToggleButton(MainActivity.this);
                            btn.setId(i);
                            btn.setTextOn("play");
                            btn.setText("click");
                            btn.setTextOff("off");

                            final int id_ = btn.getId();
                            LinearLayout layout = (LinearLayout) findViewById(R.id.mainLinearLayout);
                            layout.addView(btn);

                            btn.setOnClickListener(new View.OnClickListener() {
                                            public void onClick(View view) {
                                                    Toast.makeText(MainActivity.this, "clicked", Toast.LENGTH_SHORT).show();
                                                    int buttonId = btn.getId();
                                                    for(int ii = 0; ii<sez; ii++)
                                                    {
                                                            if(ii!=buttonId)
                                                            {
                                                                    ToggleButton ButtonToOff = (ToggleButton)findViewById(ii);
                                                                    ButtonToOff.setChecked(false);
                                                            }
                                                    }
                                            }
                                    });
                    }
            }
 }

您可能必须添加到代码中的部分主要是在onClick() 方法中。

希望有所帮助! :)

【讨论】:

  • Sez 动态按钮的数量....无论如何,我非常感谢您的努力。这是一个很好的答案
  • 很高兴它对您有所帮助。是的,但我没有 sez 的值,所以为了简单起见,我只是使用了一个随机值。 :)
  • sez 只是一个获取要创建的按钮数量的变量。虽然它的价值 10 很好.. 任何人都可以从中获得帮助。再次感谢您的帮助。我接受了你的回答.. :-)
  • @Addi.Star 谢谢你,sez 也可以是任何数字。不要紧。 Sez 可以是任何动态编号。可能不是小数或负数... :) 让我们用一个整数。
猜你喜欢
  • 1970-01-01
  • 2021-02-18
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 2020-08-24
  • 2016-12-03
相关资源
最近更新 更多