场景:
我需要在进入一个 Fragment 的时候进行一个弹窗密码校验,只有通过密码校验,才可以允许用户访问该 Fragment。但是输入的密码是对的,依旧显示密码错误,无法登陆。
分析:
我在密码校验成功和密码校验失败的地方都打上 log,同时打印出输入(input)内容和密码(password),发现密码与输入内容一致,但是却进入了密码校验失败的逻辑,再打印input.equals(password) ,发现是false,那肯定是 equals 方法出了问题,这里的的 input 是 String 变量,password 是 StringBuilder 对象,于是怀疑StringBuilder 是不是没有重写 equals 方法。
结果:
猜想正确,StringBuilder 没有重写 equals 方法,比较的不是值,而是地址,这里通过 toString() 方法将 StringBuilder 类型转化成 String 类型即可。