Включение видимости через коммутатор

#android #switch-statement #fragment #visible

#Android #switch-инструкция #фрагмент #видимый

Вопрос:

Внутри одного из моих фрагментов у меня есть тексты для редактирования, переключатели, панели поиска и т. Д. Я хотел бы, чтобы одно из положений переключателя «включено» включало видимость дополнительного редактирования текста и т. Д. Я попробовал несколько разных вариантов, как показано ниже. (Имеет ли значение, где я устанавливаю это правило)? Спасибо.

Нужно ли мне при запуске и без остановки, как у меня для панели поиска, или использовать другой аргумент для определения видимости?

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

 View view = inflater.inflate(R.layout.life_lay1, container, false);
    seekBar = (SeekBar) view.findViewById(R.id.seekBar1);
    textView1 = (TextView) view.findViewById(R.id.textView1);
    EditText01 = (EditText) view.findViewById(R.id.EditText01);
    //ib1 = (ImageButton) view.findViewById(R.id.ib1);
//  ib1.setOnClickListener(this);
    ib2 = (ImageButton) view.findViewById(R.id.ib2);
    ib2.setOnClickListener(this);
    switch3 = (Switch) view.findViewById(R.id.switch3);

    switch3.setVisibility(View.INVISIBLE);

    if(switch3.getText() =="Yes" ) // have tried string resource as well.
    {
        switch3.setVisibility(View.VISIBLE);
    }
    seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 

      {
          int  progress = 18;
            @Override
          public void onProgressChanged(SeekBar seekBar,int progresValue, boolean fromUser) 
          {
            progress = progresValue;
            if(progresValue < 18)
            {
                 textView1.setText(":  "   18);
            }
          }

          @Override
          public void onStartTrackingTouch(SeekBar seekBar) 
          {
                textView1.setText(":  "   seekBar.getProgress());
          }

          @Override
          public void onStopTrackingTouch(SeekBar seekBar)
          {
              if(seekBar.getProgress() < 18)
              {
                 textView1.setText(":  "  18);
              }
              else
              {
              textView1.setText(":  "   seekBar.getProgress());
              }


          }
      });
  

Комментарии:

1. ну, это! = я просто тестировал, но начал с ==. Я также попытался сравнить со строковым ресурсом. мой settextonэто строка, равная «Да», а setTextOff — «Нет»

2. Посмотрите здесь — о том, как управлять кнопкой переключения или переключателем: developer.android.com/guide/topics/ui/controls /…

Ответ №1:

Switch это не EditText или TextView , поэтому у него нет getText метода.

Вы должны проверить, проверено ли это с помощью isChecked , который возвращает true, если он установлен.

Так что это будет

 if(switch3.isChecked() ) // have tried string resource as well.
  

Чтобы сделать его динамичным, вы должны внедрить onCheckedChanged прослушиватель, поэтому каждый раз, когда пользователь изменяет его состояние, он обновляет видимость.

 switch3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            switch3.setVisibility(isChecked ? View.VISIBLE : View.INVISIBLE);
        }
});
  

Но подождите, остановитесь! Почему вы меняете видимость switch3 ? Это сделает невозможным его повторное изменение. Может быть, вы хотите изменить switch3 что-то еще?

(p.s не забудьте проверить использование строк .equals() )

Комментарии:

1. Спасибо за помощь, и вау только что понял, что я менял жизнеспособность этого переключателя, а не мой текст редактирования -.- (недостаточно репутации для голосования, но спасибо за быстрый пост).

2. Если это устраняет вашу проблему, нажмите «V» (под голосами), чтобы принять ответ.