Java 将edittext密码字符更改为字符串";密码正在键入…”;

Java 将edittext密码字符更改为字符串";密码正在键入…”;,java,android,Java,Android,我想将密码掩码更改为字符串。我使用了这段代码,但这会将所有字符更改为p、a或s中的一个 public class MyPasswordTransformationMethod extends PasswordTransformationMethod { @Override public CharSequence getTransformation(CharSequence source, View view) { return new PasswordCharSequence(

我想将密码掩码更改为字符串。我使用了这段代码,但这会将所有字符更改为p、a或s中的一个

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) {
      char[] chars= new char[3];
      chars[0]='p';
      chars[1]='a';
      chars[2]='s';
      return chars[length()] ;


    }

    public int length() {
      return mSource.length();
    }

    public CharSequence subSequence(int start, int end) {
      return mSource.subSequence(start, end); // Return default
    }
  }
}
在指定位置(索引)返回一个字符

所以你需要

return chars[index] ;
至少,您应该添加检查索引是否在字符数组边界内

您还可以简单地编写一个开关,它不会为每个函数调用创建内存阵列:

public char charAt(int index) {
  switch (index) {
        case 0:  return 'p'; 
        case 1:  return 'a'; 
        case 2:  return 's'; 
        case 3:  return 's'; 
        ...
        default: return ' '; 
  }
}

使用默认值时:返回“.”中断<代码>无法访问的语句发生了哈哈哈,对不起,是我的错,返回后不需要中断
public char charAt(int index) {
  switch (index) {
        case 0:  return 'p'; 
        case 1:  return 'a'; 
        case 2:  return 's'; 
        case 3:  return 's'; 
        ...
        default: return ' '; 
  }
}