как использовать TransformationMethod в android
Я хочу создать EditText, которая принимает пароли. Я хочу скрыть символ, как только он будет напечатан. Итак, я использовал TransformationMethod.
Я новичок в этом, поэтому я попробовал следующий код.
EditText editText = (EditText) findViewById(R.id.editText);
editText.setTransformationMethod(new PasswordTransformationMethod());
private class PasswordTransformationMethod extends Transformation implements TransformationMethod {
    @Override
    public CharSequence getTransformation(CharSequence source, View view) {
        return "/";
    }
    @Override
    public void onFocusChanged(View view, CharSequence source, boolean focused, int direction, Rect previouslyFocusedRect) {
        source = getTransformation(source, view);
    }
}
однако, он бросает,
01-03 10:22:35.750: E/AndroidRuntime(2102): java.lang.IndexOutOfBoundsException
Я что-то упускаю. Любая помощь будет оценена.
1 ответов
вышеуказанный метод имеет много ошибок.
Итак, я делюсь кодом, который я использую для преобразования паролей в точки.
создайте отдельный класс в том же файле Java, как это,
public class MyPasswordTransformationMethod extends PasswordTransformationMethod {
    @Override
    public CharSequence getTransformation(CharSequence source, View view) {
        return new PasswordCharSequence(source);
    }
    private class PasswordCharSequence implements CharSequence {
        private CharSequence mSource;
        public PasswordCharSequence(CharSequence source) {
            mSource = source; 
        }
        public char charAt(int index) {
            return '.'; 
        }
        public int length() {
            return mSource.length(); 
        }
        public CharSequence subSequence(int start, int end) {
            return mSource.subSequence(start, end); // Return default
        }
    }
};
реализация-то вроде
passwordEditText = (EditText) findViewById(R.id.passwordEditText);
passwordEditText.setTransformationMethod(new MyPasswordTransformationMethod());
