У меня есть строковая переменная, используемая в методе, и я хотел бы сравнить текст из моего EditText с этой переменной.Изменение текста TextView, когда текст EditText соответствует строке. Нет кнопок
Как только они совпадают, я хотел бы обновить TextView до уровня, отличного от того, что он в настоящее время. Код ниже:
public void textChangeMethod() {
TextView myText = (TextView)findViewById(R.id.my_Text);
EditText myEdit = (EditText)findViewById(R.id.my_Edit);
String testString = "Test";
String matchString = myEdit.getText().toString();
if(matchString == testString){
myText.setText("Finished")
}
Однако, проблема в том, это, если оператор работает до того, как пользователь сделал с вводом FuL слово, и оно никогда не будет правдой. Я бы не использовал кнопку, чтобы убрать это.
Я попытался реализовать TextWatcher, но ничего не происходит. Я новичок в разработке Android и не уверен, что полностью понимаю, как его использовать.
Я также подумал об использовании таймера обратного отсчета, а затем цикл while, чтобы постоянно проверять значение текстового значения для строки. Я хочу быть максимально эффективным.
ПОЛНЫЙ КОД НИЖЕ
public class NewClass extends Activity {
@SuppressLint("NewAPI")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game_screen);
// Show the Up button in the action bar.
setupActionBar();
textChangeMethod();
}
public void textChangeMethod() {
//Local variables
final TextView myText = (TextView)findViewById(R.id.my_Text);
final String testString = "Test";
EditText myEdit = (EditText)findViewById(R.id.my_Edit);
final String matchString = myEdit.getText().toString();
TextWatcher filterTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after)
{
}
@Override
public void onTextChanged(CharSequence s,int i, int i2,int i3)
{
if(!TextUtils.isEmpty(s) && matchString.equals(s)){
myText.setText("Finished");
}
}
@Override
public void afterTextChanged(Editable arg0)
{
}
};
myEdit.addTextChangedListener(filterTextWatcher);
}
FINAL EDIT
Оба ответа помогли. Я также смог посмотреть больше в Интернете и получить подробную статью о Text Watcher.
Мне нужно было использовать 'aterTextChange'. Однако теперь у меня есть новая проблема. Если я не смогу понять это, я вернусь, чтобы опубликовать новый вопрос.
Как всегда, спасибо за поддержку.
FINAL EDIT # 2
Так что проблема у меня была после внедрения afterTextChanged в том, что мое приложение упал и продолжал мигать, и был полностью непригодным для использования.
После быстрого поиска стека, кажется, мне нужно реализовать removeTextChangedListener, чтобы он переставал быть вызванным.
Все хорошо. Хотел бы я согласиться на оба ответа. Спасибо.
вы получите ваш EditText строку, когда ваша активность инициирована, так пусто и условие на onTextChange() никогда не было правдой! поэтому вы должны получить его on onTextChange() для инструкции if. –