カスタム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と比較することができますが、それが機能するはずのない方法でのみです。「Open」や「Complete」などの実際の文字列と比較することはできません。
私はこれに少し気が狂いそうです、そして私のC#コンフォートゾーンをひどく逃しています。この特定のアクティビティは、listfragments、contentproviders、customadapters、viewpagers、pagertitlestrips、およびlistrowxmlテンプレートの悪夢です。
半分!