Android异常 NullPointerException: Attempt to invoke virtual method int java.lang.Integer.intValue()

来源:互联网 发布:人类进化 知乎 编辑:程序博客网 时间:2024/06/15 13:49

异常详情

05-23 16:15:41.672  4206  6875 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference05-23 16:15:41.672  4206  6875 E AndroidRuntime:    at org.libjingle.LibjingleWrapper$MessageEventHandler.handleMessage(LibjingleWrapper.java:310)05-23 16:15:41.672  4206  6875 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:102)05-23 16:15:41.672  4206  6875 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:142)05-23 16:15:41.672  4206  6875 E AndroidRuntime:    at android.os.HandlerThread.run(HandlerThread.java:61)

相关代码

private static Map<String, Integer> downloadingFiles = null;...downloadingFiles.put(fileInfo.strFileName, msgId);...int msgid = downloadingFiles.get(serverFileName);

问题原因:
@1. 当serverFileName为null时,Map.get(Object key)会产生异常
java.lang.NullPointerException if the specified key is null and this map does not permit null keys (optional)
@2. 当downloadingFiles.get(serverFileName)为null时,会产生NullPointerException

解决方法:

将如下代码int msgid = downloadingFiles.get(serverFileName);更改为:public int getId(String serverFileName) {        if (null != serverFileName && downloadingFiles.containsKey(serverFileName)) {            return downloadingFiles.get(serverFileName);        }        return 0;    }

不要直接调用Map.get(Object key)方法,应该先判断Map.containsKey(String key)是否包含该字段,然后再从中取。

阅读全文
1 0