2016-04-26 1 views
0

Я работаю над Android-приложением. Я создал несколько кнопок переключения динамически, и они тоже можно использовать для кликов ...Одна кнопка Toggle в то время

Что я хочу достичь, это переключиться на любую конкретную кнопку, и все в порядке. , но когда я переключаюсь на любую другую кнопку, все остальные кнопки переключателя должны гаснуть.

как я могу переключаться на любую кнопку за раз. если любой другой нажал на предыдущий, должен погаснуть.

есть динамическое количество кнопок ..

и я не знаю, как этого добиться.

вот мой код:

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

+1

Поскольку вы сказали, что это не * должно быть * ToggleButtons, посмотрите RadioButton и RadioGroup: http://stackoverflow.com/questions/10107532/only-one-radio-button-selected-at -a-time – NSimon

+0

Я пробовал этот RadioButton. это было достигнуто, но в настоящее время это требование ToggleButton или простая кнопка .. потому что кнопка переключения получает два раза при прослушивании при включении и выключении –

+0

@ Addi.Star вы можете использовать ' .setChecked (false)' метод для установки ваших кнопок на Un проверяется в цикле for –

ответ

0

Этот код отлично работает для меня. Однако я удалил много вашего кода, чтобы упростить ответ. Поэтому в доверенности вы можете изменить те значения, которые я установил, поскольку я не знаю значения sez или rowlayout. Я заменил их значения как sez = 10 и макет на линейный макет. Anyways вот код.

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().

Надежды помогли! :)

+0

отлично ... Успех ..... :-) cheerss ... –

+0

Sez no of dynamic buttons .... так или иначе, я многое благодаря вашим усилиям. это отличный ответ –

+0

Я рад, что это вам помогло.Да, но у меня не было значения sez, поэтому я просто использовал случайное значение для простоты. :) –