我在哪里使用TextWatcher实现?

时间:2012-11-20 15:02:06

标签: android android-edittext textwatcher

我的意思是,我应该在哪个函数中使用文本观察器? 我试图在onResume()函数中使用它,但这不起作用。

我正在尝试在用户输入时检查我的EditText框中输入的每个字符之一。更具体地说,我给了用户一个谜语,答案是'SOS'。答案在EditText框中,我想在输入后立即检查每个字符(我已经在edittext框中添加了一个最大长度属性,因此它不会超过3)。当我找到一个错误的字符时,我想设置一个X图标图像,如果字符是正确的,则相反。

这是我的TextWatcher代码段:

final EditText editText=(EditText)findViewById(R.id.editTxt_three);
    editText.addTextChangedListener(new TextWatcher() 
    {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) 
        {

        }
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) 
        {

        }
        @Override
        public void afterTextChanged(Editable s) 
        {
            for(int i=0;i<editText.length();i++)
            {
                if(i==0)
                {
                    img=(ImageView)findViewById(R.id.icon1);
                    if(s.charAt(i)!='s' || s.charAt(i)!='S')
                        img.setVisibility(1);
                    else
                        img.setVisibility(0);
                }
                if(i==1)
                {
                    img=(ImageView)findViewById(R.id.icon2);
                    if(s.charAt(i)!='o' || s.charAt(i)!='O')
                        img.setVisibility(1);
                    else
                        img.setVisibility(0);
                }
                if(i==2)
                {
                    img=(ImageView)findViewById(R.id.icon3);
                    if(s.charAt(i)!='s' || s.charAt(i)!='S')
                        img.setVisibility(1);
                    else
                        img.setVisibility(0);
                }
            }

        }
    });

简而言之,我应该在哪里使用此代码? 如果您想到某些事情,请随意简化我的代码:)

1 个答案:

答案 0 :(得分:0)

你可以在onCreate中使用textwatcher,下面的代码可以帮助你。

import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.ImageView;

public class MainActivity extends Activity {
    ImageView img,img2,img3;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final EditText editText=(EditText)findViewById(R.id.editText1);
        editText.addTextChangedListener(new TextWatcher() 
        {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) 
            {

            }
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) 
            {

            }

            @Override
            public void afterTextChanged(Editable arg0) {
                String s = editText.getText().toString();
                  for(int i=0;i<editText.getText().toString().length();i++)
                    {
                        if(i==0)
                        {
                            img=(ImageView)findViewById(R.id.imageView1);                           
                            if(s.charAt(i)!='s' || s.charAt(i)!='S')
                                img.setVisibility(1);
                            else
                                img.setVisibility(0);
                        }
                        if(i==1)
                        {
                            img2=(ImageView)findViewById(R.id.imageView2);
                            if(s.charAt(i)!='o' || s.charAt(i)!='O')
                                img2.setVisibility(1);
                            else
                                img2.setVisibility(0);
                        }
                        if(i==2)
                        {
                            img3=(ImageView)findViewById(R.id.imageView3);
                            if(s.charAt(i)!='s' || s.charAt(i)!='S')
                                img3.setVisibility(1);
                            else
                                img3.setVisibility(0);
                        }
                    }

            }
        });
    }


}
相关问题