2011-08-18 16 views
0

我開發了一個非常簡單的android應用程序,然後我混淆了代碼。當我可能替換char序列時,會拋出nullPointerException異常。nullPointerException當替換字符序列

這裏是我的堆棧跟蹤:

java.lang.NullPointerException 
at com.xpandit.pemobile.android.loadactivity.ak.d(Unknown Source) 
at com.xpandit.pemobile.android.loadactivity.g.onTextChanged(Unknown Source) 
at android.widget.TextView.sendOnTextChanged(TextView.java:6335) 
at android.widget.TextView.handleTextChanged(TextView.java:6376) 
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:6520) 
at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:889) 
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352) 
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269) 
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432) 
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:409) 
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:28) 
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:583) 
at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:174) 
at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:120) 
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:257) 
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4627) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
at dalvik.system.NativeStart.main(Native Method) 

正如我所說的代碼混淆和映射文件我已經找到了正確的方法(至少我認爲)。問題是:在什麼情況下,替換方法會拋出一個空指針?

也許問題不在於替換方法!誰能告訴我問題在哪裏以及如何解決?在此先感謝...

編輯: 我認爲這個問題必須在如此簡單的指令。

if (aux.contains(" ")){ 
    aux = aux.replace(" ", "%20");     
} 
+0

有幾個問題......爲什麼要混淆代碼?我們如何在沒有代碼的情況下幫助你? – RoflcoptrException

+1

你應該提供導致'NullPointerException'的代碼。請填寫代碼 – Michael

+0

。 – user370305

回答

0

使用replaceAll()代替replace()

if (aux.contains(" ")){ 
    aux.replaceAll(" ", "%20");     
} 


參考:

String replace(CharSequence target, CharSequence replacement) 

複製該字符串與另一序列替換指定的靶序列的出現。

String replaceAll(String regularExpression, String replacement) 

替換此字符串與給定替換爲內所有正則表達式匹配。

0
if (aux.contains(" ")){ 

如果aux爲空則拋出NPE。它應該是

if (anx != null && aux.contains(" ")){ 
1

,如果該指令,拋出NPE

if (aux.contains(" ")) 

所以很顯然,奧克斯爲空,所以你不能調用contanis方法上的空。 在空狀態下添加一些檢查

if (aux!=null && aux.contains(" "))