在自定义 SimpleCursorAdapter 中,我试图比较一个状态字符串,结果令人困惑。
我的字符串是这样从光标初始化的(我已经检查过toast
它是否包含预期值)。
String visitStatus = cursor.getString(cursor.getColumnIndex(CallData.COLUMN_VisitStatus));
visitStatus 可以为 null、Open、Canceled 或 Complete。
如果我尝试将 visitStatus 与“引号中的任何字符串”进行比较,应用程序会因 NullPointerException 而崩溃。只有当我与 null 比较时,我才能得到任何东西——这对我没有用
if(visitStatus.equals(null)) // the app crashes with a NullPointerException
if(visitStatus == null) // doesn't crash
if(visitStatus != null) // doesn't crash
if(visitStatus == "Complete") // doesn't crash or do anything
if(visitStatus.equals("Complete")) // the app crashes with a NullPointerException.
基本上,我可以与 null 进行比较,但只能以不应该工作的方式进行比较。我无法与“打开”或“完成”等实际字符串进行比较。
我对此有点抓狂,并且非常想念我的 C# 舒适区。这个特定的活动是 listfragments、contentproviders、customadapter、viewpagers、pagertitlestrips 和列表行 xml 模板的噩梦!
住手!