android.os.NetworkOnMainThreadException

顾名思义是不能在主线程上发送网络请求,访问网络的代码不能写在主线程中。

据说在android 4.0版本前不会报错。

可能是因为网络请求比较耗时,会阻塞主线程。我们可以新建一个Thread, 向Handler发送Message来执行网络访问。

也可以降低minSdkVersion

 要切记的是我们不能在新建的Thread类中的run方法内执行有关有界面UI的操作,典型的就是不能进行setText方法,因为Android中子线程是不允许刷新UI的。

有关UI的操作必须放到handler中去执行。

new Thread(){
   public void run() {
//在这里进行非UI操作,包括访问网络
//给mHandler发一个空信息
mHandler.sendEmptyMessage(0);

          }
}.start;



Handler mHandler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
      //在这里进行UI操作
    }
}

  

其他人的解决

http://blog.csdn.net/haida360/article/details/9181545

http://blog.csdn.net/wotoumingzxy/article/details/7797295

http://www.cnblogs.com/freexiaoyu/archive/2012/04/13/2445707.html

原文地址:https://www.cnblogs.com/nova-/p/3633022.html