#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» (под голосами), чтобы принять ответ.