Одна кнопка переключения за раз

Я работаю над приложением для 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 дня, но все еще застрял в этом, любой может мне помочь. будет очень признателен....


person Addi.Star    schedule 26.04.2016    source источник
comment
Поскольку вы сказали, что это не обязательно ToggleButtons, взгляните на RadioButton и RadioGroup : stackoverflow.com/questions/10107532/   -  person NSimon    schedule 26.04.2016
comment
Я пробовал этот RadioButton. это было достигнуто, но теперь требуется ToggleButton или простая кнопка ... потому что кнопка переключения прослушивается дважды при включении и выключении   -  person Addi.Star    schedule 26.04.2016
comment
@Addi.Star, вы можете использовать метод <YourToggleButton>.setChecked(false), чтобы установить для кнопок значение «Не проверено» в цикле for   -  person KISHORE_ZE    schedule 26.04.2016
comment
будет ли он проверять только одну кнопку переключения за раз? поскольку я хочу нажать другую кнопку переключения, ранее нажатая кнопка переключения должна отключиться   -  person Addi.Star    schedule 26.04.2016
comment
@KISHORE_ZE: я использовал этот метод, но он работает со всеми кнопками, которые переводят их в выключенное состояние.   -  person Addi.Star    schedule 27.04.2016
comment
любая помощь в этом, я пытался поместить их в группу радио, но это также не позволяет мне нажимать только одну кнопку за раз. и если выбрана следующая кнопка, другая нажатая кнопка должна получить Checked (false) ... но это происходит со всеми кнопками, даже если мы нажимаем в данный момент ... мне нужна помощь в этом поиске по всему Интернету   -  person Addi.Star    schedule 27.04.2016
comment
@Addi.Star, вы можете поместить его в цикл for и отключить все кнопки, кроме текущей. Вы упомянули, что количество кнопок было динамическим, верно?   -  person KISHORE_ZE    schedule 27.04.2016
comment
да, количество кнопок является динамическим .. можете ли вы поделиться со мной кодом, чтобы понять, как отключить все остальные кнопки, кроме нажатой. потому что я пытался сделать это, сама кнопка выключается, и все кнопки начинают вести себя как простая кнопка, а не переключаться.   -  person Addi.Star    schedule 28.04.2016
comment
Извините, мне не пришло уведомление. скоро выложу код   -  person KISHORE_ZE    schedule 30.04.2016
comment
@Addi.Star, пожалуйста, посмотрите мой ответ. Извините за поздний ответ, я был в автономном режиме пару дней, и я не получил уведомление или открытое переполнение стека. В любом случае код, который я дал, работал у меня. Я надеюсь, что это поможет вам! :)   -  person KISHORE_ZE    schedule 30.04.2016


Ответы (1)


Этот код отлично работает для меня. Однако я удалил большую часть вашего кода, чтобы упростить ответ. Таким образом, вы можете изменить те значения, которые я установил, поскольку я не знаю значения sez или rowlayout, я заменил их значения как 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().

Надеюсь на помощь! :)

person KISHORE_ZE    schedule 30.04.2016
comment
Sez, нет динамических кнопок .... во всяком случае, я справился, большое спасибо за ваши усилия. это отличный ответ - person Addi.Star; 02.05.2016
comment
Я рад, что это помогло вам. Да, но у меня не было значения sez, поэтому я просто использовал случайное значение для простоты. :) - person KISHORE_ZE; 02.05.2016
comment
sez — это просто переменная, получающая кнопки для создания . хотя это нормально с его значением 10 .. любой может получить от этого помощь. еще раз спасибо за вашу помощь. я принял ваш ответ .. :-) - person Addi.Star; 02.05.2016
comment
@Addi.Star Спасибо, а также sez может быть любым числом. Это не имеет значения. СЭЗ может быть любым, динамическим нет. Вероятно, не десятичное и не отрицательное... :) Давайте возьмем целое число. - person KISHORE_ZE; 02.05.2016