2016-06-22 2 views
1

SetHint обновляет TextEdit только после OnClickListener (после нажатия кнопки) В моем случае, когда пользователь вводит текст в TextEdit и активирует переключение, подсказка будет изменяться только после того, нажата кнопка отправки. Если я, например, нажму на Toggle, подсказка будет такой же, как оригинал.SetHint обновляет TextEdit только после OnClickListener (после нажатия кнопки)

Я хочу, чтобы SetHint работал сразу после включения или выключения. Хотите изменить подсказку в TextEdit на «Custom Text» сразу после нажатия кнопки. В противном случае я хочу, чтобы TextEdit оставался с оригинальным текстом подсказки. Не уверен, что мне нужно изменить его в другом месте, поскольку я использую тот же текст подсказки в макете.

public class MainActivity extends Activity { 
    private Button button; 
    private TextEdit text; 
    private ToggleButton toggle; 


    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout); 

text = (TextEdit) findViewById(R.id.myid); 
toggle = (ToggleButton) findViewById(R.id.myid2); 
     if (toggle.isChecked()) { 
      text.setHint("Custom Text"); 
     } else { 
      text.setHint("Text"); 
     } 
      button.setOnClickListener(new View.OnClickListener() { 
... 

ответ

0

Вы можете сделать это, как

button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     // change the hint text when click in button 
     if (toggle.isChecked()) { 
      text.setHint("Custom Text"); 
     } else { 
      text.setHint("Text"); 
     } 
    } 
}); 
+0

Это работает именно так. (Я не знаю, почему, так как я написал его вне OnClickListener). Я хочу, чтобы намек был изменен сразу после того, как я нажал кнопку переключения. – Anonymous

+0

@ Анонимный, если вы считаете, что это решит вашу проблему, отметьте его как правильный ответ. спасибо –

0

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

Возможно, вы используете кнопку «setOnCheckedChangeListener» на кнопке. Его реализация похожа на onClickListener.

Для получения более подробной информации см. this question.

Редактировать: Вы сказали, что хотите, чтобы подсказка изменилась только после нажатия кнопки «отправить», но вы также сказали, что хотите изменить ее при изменении «переключения». Какой бы метод вы ни использовали (onCheck или onClick), зависит от того, что вы действительно хотите.

+0

Спасибо, что помогли. Решение для отправки. – Anonymous

0
toggle = (ToggleButton) findViewById(R.id.myid2); 
     final CompoundButton.OnCheckedChangeListener toggleButtonChangeListener = new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if (toggle.isChecked()) { 
        text.setHint("Custom Text"); 
       } else { 
        text.setHint("Text"); 
       } 

      } 
     }; 
     toggle.setOnCheckedChangeListener(toggleButtonChangeListener); 
Смежные вопросы