异常提示:
(1)android.os.NetworkOnMainThreadException
......
(2)java.lang.nullpointerexception
......
分析:
(1)网络任务在主线程运行抛出异常。主要原因是Android2.3以上(不包含2.3)版本中,网络任务不能运行在主线程,需要建立新的线程来运行网络任务。
(2)空指针异常。在本人Mp3Player工程中,是由于下载任务未完成而导致对象为空,因而产生该异常。
解决方法:
(1)建立新的线程,在新的线程中执行网络任务。
class DownloadThread implements Runnable{public DownloadThread(Mp3Info mp3Info){
.......
}@Override
public void run() {
......
}
}
DownloadThread downloadThread = new DownloadThread(mp3Info);
//启动新线程
Thread thread = new Thread(downloadThread);
thread.start();
(2)修改Android版本
1)选择工程右键properties--->Android,在右栏的Target Name下选择2.2或其他小于等于2.3的版本---> Appiy --->OK。
2)打开Manifest.xml文件,修改对应的 android:minSdkVersion 与 android:targetSdkVersion 的值,使其与所选版本对应。如:
Android2.2为: android:minSdkVersion="8"
android:targetSdkVersion="8"
3)选择菜单Project--->Clean(确保Build Automatically已经勾选),重新生成R文件。
4)删除res--->values-v11和values-v14。
5)删除res--->menu--->project.xml中的 android:showAsAction="never"。
提醒:
在Clean后,R文件没有自动生成,Build Automatically已经勾选,但还是没有生成,右键工程properties--->Android,在Target Name下先选择Android4.3或其他原有版本,选择Apply,然后再选择Android2.2或其他小于2.3的版本即可。