我在方法中使用了一个字符串变量,我想将 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")
}
然而,问题是,这个 if 语句在用户完成输入 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);
}
最终编辑
两个答案都有帮助。我还可以在网上查看更多内容,并获得有关 Text Watcher 的深入文章。
我需要使用“aterTextChange”。但是,现在我遇到了一个新问题。如果我无法弄清楚,我会回来发布一个新问题。
一如既往,感谢您的支持。
最后编辑#2
所以我在实现 afterTextChanged 后遇到的问题是我的应用程序崩溃并一直闪烁,并且完全无法使用。
在快速堆栈搜索之后,看来我需要实现 removeTextChangedListener 才能停止调用它。
一切都很好。我希望我能接受这两个答案。谢谢你。