
我只有在较高的API上调试时才会强制关闭脚本:16,但是在API上运行时效果很好:10.可能是我的项目设置问题吗?
这是对服务器的简单请求,以获取片段中的类别列表.
gallery.java
public class gallery extends Fragment { JsONArray jArray; String result = null; inputStream is = null; StringBuilder sb = null; private ListVIEw storeList; @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { // Todo auto-generated method stub VIEw myFragmentVIEw = inflater.inflate(R.layout.tab_frag1_layout, container, false); storeList = (ListVIEw) inflater.inflate(R.layout.List, null); return myFragmentVIEw; } @OverrIDe public voID onCreate(Bundle savedInstanceState) { // Todo auto-generated method stub super.onCreate(savedInstanceState); } @OverrIDe public voID onActivityCreated(Bundle savedInstanceState) { // Todo auto-generated method stub super.onActivityCreated(savedInstanceState); ArrayList<nameValuePair> nameValuePairs = new ArrayList<nameValuePair>(); // http post try { httpClIEnt httpclIEnt = new DefaulthttpClIEnt(); httpPost httppost = new httpPost( "http://xxx.xxx.xxx/androID_link.PHP"); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); httpResponse response = httpclIEnt.execute(httppost); httpentity entity = response.getEntity(); is = entity.getContent(); } catch (Exception e) { Log.e("log_tag", "Error in http connection" + e.toString()); } // convert response to string try { BufferedReader reader = new BufferedReader(new inputStreamReader( is, "iso-8859-1"), 8); sb = new StringBuilder(); sb.append(reader.readline() + "\n"); String line = "0"; while ((line = reader.readline()) != null) { sb.append(line + "\n"); } is.close(); result = sb.toString(); } catch (Exception e) { Log.e("log_tag", "Error converting result " + e.toString()); } // paring data int ct_ID; String ct_name; try { jArray = new JsONArray(result); JsONObject Json_data = null; for (int i = 0; i < jArray.length(); i++) { Json_data = jArray.getJsONObject(i); ct_ID = Json_data.getInt("brand_ID"); ct_name = Json_data.getString("serIEs_name"); } } catch (JsONException e1) { Toast.makeText(getActivity(), "No Data Found", Toast.LENGTH_LONG) .show(); } catch (ParseException e1) { e1.printstacktrace(); } }log.txt的
01-29 03:25:54.653: E/log_tag(4324): Error in http connectionandroID.os.networkonmainthreadException01-29 03:25:54.653: E/log_tag(4324): Error converting result java.lang.NullPointerException01-29 03:25:54.653: W/dalvikvm(4324): threadID=1: thread exiting with uncaught exception (group=0xb5e98288)01-29 03:25:54.653: E/AndroIDRuntime(4324): FATAL EXCEPTION: main01-29 03:25:54.653: E/AndroIDRuntime(4324): java.lang.NullPointerException01-29 03:25:54.653: E/AndroIDRuntime(4324): at org.Json.JsONTokener.nextCleanInternal(JsONTokener.java:116)01-29 03:25:54.653: E/AndroIDRuntime(4324): at org.Json.JsONTokener.nextValue(JsONTokener.java:94)01-29 03:25:54.653: E/AndroIDRuntime(4324): at org.Json.JsONArray.<init>(JsONArray.java:87)01-29 03:25:54.653: E/AndroIDRuntime(4324): at org.Json.JsONArray.<init>(JsONArray.java:103)01-29 03:25:54.653: E/AndroIDRuntime(4324): at com.nazartt.angTrading.gallery.onActivityCreated(gallery.java:93)01-29 03:25:54.653: E/AndroIDRuntime(4324): at androID.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:891)01-29 03:25:54.653: E/AndroIDRuntime(4324): at androID.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:1080)01-29 03:25:54.653: E/AndroIDRuntime(4324): at androID.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)01-29 03:25:54.653: E/AndroIDRuntime(4324): at androID.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)01-29 03:25:54.653: E/AndroIDRuntime(4324): at androID.support.v4.app.FragmentManagerImpl.run(FragmentManager.java:420)01-29 03:25:54.653: E/AndroIDRuntime(4324): at androID.os.Handler.handleCallback(Handler.java:615)01-29 03:25:54.653: E/AndroIDRuntime(4324): at androID.os.Handler.dispatchMessage(Handler.java:92)01-29 03:25:54.653: E/AndroIDRuntime(4324): at androID.os.Looper.loop(Looper.java:137)01-29 03:25:54.653: E/AndroIDRuntime(4324): at androID.app.ActivityThread.main(ActivityThread.java:4745)01-29 03:25:54.653: E/AndroIDRuntime(4324): at java.lang.reflect.Method.invokeNative(Native Method)01-29 03:25:54.653: E/AndroIDRuntime(4324): at java.lang.reflect.Method.invoke(Method.java:511)01-29 03:25:54.653: E/AndroIDRuntime(4324): at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)01-29 03:25:54.653: E/AndroIDRuntime(4324): at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:553)01-29 03:25:54.653: E/AndroIDRuntime(4324): at dalvik.system.NativeStart.main(Native Method)解决方法:
如果尝试在主(UI)线程(StrictMode)上进行网络 *** 作,则新版本的AndroID(3.0)上会出现NetworkOnMainThreadException.使用AsyncTask进行网络 *** 作,设置简单,并且以逻辑方式进行 *** 作(在后台执行某些 *** 作,然后在完成后发布到UI线程).
以上是内存溢出为你收集整理的android-高级API上的NetworkOnMainThreadException全部内容,希望文章能够帮你解决android-高级API上的NetworkOnMainThreadException所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)