Как проверить, является ли данный текст действительным или нет с помощью TextWatcher? - PullRequest
0 голосов
/ 19 января 2019

Я хочу реализовать функциональность MPIN в своем приложении для мобильного банкинга. У меня есть шесть правок с использованием text-watcher. Я делаю эту функцию.

После того, как я заполнил 6 полей, как проверить, что этот пин-кодправильно или нет автоматически и как показать предупреждение.Если ПИН-код правильный, как автоматически перейти к следующему экрану.

Я сохранил ПИН-код в sharedpreference, используя это значение, как проверить условие. Где я должен проверить это условие.Пожалуйста, помогите мне.

Это мой код:

public class AboutUsActivity extends AppCompatActivity {
EditText t1,t2,t3,t4,t5,t6;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_about_us);
    t1=(EditText) findViewById(R.id.first);
    t2=(EditText) findViewById(R.id.second);
    t3=(EditText) findViewById(R.id.third);
    t4=(EditText) findViewById(R.id.fourth);
    t5=(EditText) findViewById(R.id.fifth);
    t6=(EditText) findViewById(R.id.sixth);

    t1.addTextChangedListener(new GenericTextWatcher(t1));
    t2.addTextChangedListener(new GenericTextWatcher(t2));
    t3.addTextChangedListener(new GenericTextWatcher(t3));
    t4.addTextChangedListener(new GenericTextWatcher(t4));
    t5.addTextChangedListener(new GenericTextWatcher(t5));
    t6.addTextChangedListener(new GenericTextWatcher(t6));

 }
public class GenericTextWatcher implements TextWatcher
{
    private View view;
    private GenericTextWatcher(View view)
    {
        this.view = view;
    }

    @Override
    public void afterTextChanged(Editable editable) {
        // TODO Auto-generated method stub

        Log.i("AA","aftertext--");
        String text = editable.toString();
        switch(view.getId())
        {

            case R.id.first:
                if(text.length()==1)
                    t2.requestFocus();
                if(text.length()==0)
                    t1.requestFocus();
                break;
            case R.id.second:
                if(text.length()==1)
                    t3.requestFocus();
                if(text.length()==0)
                    t1.requestFocus();
                break;
            case R.id.third:
                if(text.length()==1)
                    t4.requestFocus();
                if(text.length()==0)
                    t2.requestFocus();
                break;
            case R.id.fourth:
                if(text.length()==1)
                    t5.requestFocus();
                if(text.length()==0)
                    t3.requestFocus();
                break;
            case R.id.fifth:
                if(text.length()==1)
                    t6.requestFocus();
                if(text.length()==0)
                    t4.requestFocus();
                break;
            case R.id.sixth:
                if(text.length()==0)
                    t5.requestFocus();
                break;
        }
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
        // TODO Auto-generated method stub
        Log.i("AA","beforetext--");
    }

    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) 
{
        // TODO Auto-generated method stub
        Log.i("AA","textchanged--");
    }


}

}

1 Ответ

0 голосов
/ 05 февраля 2019
 @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) 
    {
        if(arg0.length() == 6)
        {
           // method to check if code is correct or not
        }   

    }

или простой способ сделать это, используйте библиотеку:

https://github.com/mukeshsolanki/android-otpview-pinview

это даст вам обратный вызов, когда пользователь напишет 6 цифр

private OtpView otpView;
 otpView = findViewById(R.id.otp_view);
 otpView.setListener(new OnOtpCompletionListener() {
   @Override public void onOtpCompleted(String otp) {

     // do Stuff
     Log.d("onOtpCompleted=>", otp);
   }
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...