更高 API 上的 NetworkOnMainThreadException

2024-01-29

仅当我在更高的 API 上进行调试时,脚本才会强制关闭:16,但是当涉及到 API 时,它工作正常:10。这可能是我的项目设置问题吗?

这是对服务器的一个简单请求,用于获取片段中的类别列表。

画廊.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.NetworkOnMainThreadException
01-29 03:25:54.653: E/log_tag(4324): Error converting result java.lang.NullPointerException
01-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: main
01-29 03:25:54.653: E/AndroidRuntime(4324): java.lang.NullPointerException
01-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$1.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)

你有一个NetworkOnMainThreadException http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html如果您尝试在主 (UI) 线程上执行网络操作(StrictMode http://developer.android.com/reference/android/os/StrictMode.html),。使用AsyncTask http://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/对于您的网络操作,它的设置很简单,并且以逻辑方式操作(在后台执行某些操作,然后一旦完成,就发布到 UI 线程)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更高 API 上的 NetworkOnMainThreadException 的相关文章

  • 在 Android 中获取联系方式需要花费大量时间?

    您好 目前正在做一个与联系人相关的项目 我正在从联系人中获取详细信息 电子邮件 电话号码和联系人姓名 效果很好 但问题是获取联系方式需要很长时间 超过 1000 个联系人 包括从社交网站同步的联系人 这样我就放了一个Asynchronous
  • 将片段部分移出屏幕

    我已经被这个问题难住有一段时间了 我试图将包含在 FrameLayout 中的片段向右移动 以便只有片段的左侧 20 可见 我认为我遇到的问题是父级不会让片段移出其边界 或者我不知道如何移动它 我所尝试的一切只是将片段推到右墙上 然后缩放片
  • 如何使用 zXing 在 Android 中创建 IntentIntegrator

    我想创建一个对象IntentIntegrator在安卓中 IntentIntegrator integrator new IntentIntegrator ZBarReaderActivity this Here ZBarReaderAct
  • com.google.android:android:jar 的 dependency.dependency.version' 丢失

    我正在尝试使用 Eclipse 运行一个简单的虚拟 Android 项目 并且我正在尝试使用 Maven amd 我已按照已接受答案的教程进行操作this https stackoverflow com questions 6735562
  • 如何在Android中将文件转换为base64(如.pdf、.text)?

    如何将 SD 卡文档 pdf txt 转换为 Base 64 字符串并将字符串发送到服务器 这个方法对我有用 String encodeFileToBase64Binary encodeFileToBase64Binary yourFile
  • 如何实现可运行队列

    我正在尝试实现一个可运行队列 在异步任务期间依次执行 意味着队列中的下一个将在另一个完成后执行 我编写了一个管理器来管理这些可运行对象和本身就是可运行对象的任务 然后 我获取异步任务中的第一个任务并运行它 希望它能够在队列中运行 但是它最终
  • Android 上 WebRTC 的自定义视频源

    Overview 我想使用自定义视频源通过 WebRTC Android 实现来直播视频 如果我理解正确的话 现有的实现仅支持 Android 手机上的前置和后置摄像头 以下类与此场景相关 Camera1Enumerator java ht
  • Android Facebook SDK 和 URL 方法成功形成好友对话框,但无法提交

    我开始认为这是一个错误 请证明我错了 我想以编程方式在 Facebook 上加好友 他们是唯一且肯定是该人在现实生活中认识的人 以下三种解决方案都具有相同的结果 成功的好友对话框 意味着个人资料名称 图片 指示操作的语句 与某人成为好友 以
  • 如何在谷歌地图上显示闪烁的图标

    我想在谷歌地图上显示用户的当前位置 每件事对我来说都运转良好 我只是使用标记在地图上显示当前位置 现在我想让该标记像 Android 手机上的原始谷歌地图应用程序一样闪烁 我想我必须使用动画来达到这个目的 但我不知道如何使用它 我正在互联网
  • 喷气背包中不同类型的宽度组成

    我正在 jetpack compose 的文本字段中工作 我想建立这样的东西 TextField value value onValueChange value it modifier Modifier requiredWidth 56 d
  • 以编程方式卸载 Android 应用程序

    我希望能够允许我的用户从我的应用程序中卸载应用程序 就像 Google Play 商店允许其用户一样 请下图 主要问题是如何定义一个按钮 按下它我们可以通过提供包名称或其他一些信息来卸载应用程序 就像图像上的卸载按钮一样 try Inten
  • 应用程序启动器图标显示在活动的操作栏上

    在我的操作栏上显示应用程序图标 我不希望它出现在操作栏上 我修改了 androidmanifest xml 并删除了android icon从活动元素中 即使图标正在显示
  • 在 NumberPicker 中显示更多数字

    我有两个问题 第一个问题是删除 NumberPicker 中的分隔线 我在 Android 中扩展 NumberPicker 来解决这个问题 如下所示 import android content Context import androi
  • 尝试在后台使用 AsyncTask 解析 JSON 时强制关闭

    我是 Android 开发新手 正在研究 json 数据 我设法让解析工作 我想显示一个 ProgressDialog 我读到我需要使用 AsyncTask 但由于某种原因 一旦我将相同的工作代码放入 doInBackground 中 即使
  • startDrag 方法 已弃用且无法编译程序

    startDrag android content ClipData android view View DragShadowBuilder java lang Object int 已弃用 如何解决这个问题而又不失去对旧版本的兼容性 还有
  • onActivityResult() 在 startActivityForResult() 之后未使用 Intent.ACTION_GET_CONTENT 调用

    我得到了我的主要Activity其中持有不同的Fragment的 一个片段使用户可以打开一个DialogFragment 该对话框打开声音文件列表 并且该对话框还包含一个 添加 按钮 用户应该能够从中添加自己的声音文件 为此 我想使用标准的
  • API 24 AccessibilityService.dispatchGesture() 方法如何工作?

    通过 API 24 我们有了一种向设备发送手势的方法 但是目前还没有可靠的文档或示例 我正在尝试让它工作 但目前手势每次都会点击 onCancelled 回调 这是我调用该方法的代码 TargetApi 24 private void pr
  • Visual Studio代码无法检测到模拟器设备或连接的电话

    I was running my app with vscode using Android emulator or my phone however all of a sudden vscode could not identify an
  • 在片段视图之间切换

    在 xml 布局文件中声明片段的标准方法是
  • 切换按钮形状不变

    我正在尝试制作一个带有绿色背景的圆形切换按钮 我用了

随机推荐

  • 位置服务 onProviderEnabled 从未被调用

    我有一项可以在我的应用程序中更新位置的服务 当我在禁用 GPS 的情况下启动应用程序 返回 Android 菜单并启用 GPS 最后返回我的应用程序 服务尚未被销毁 时 永远不会调用 onProviderEnabled 有人可以帮忙吗 UP
  • 空列表布尔值

    这可能很愚蠢 但对我来说有点令人困惑 In 697 l In 698 bool l Out 698 False In 699 l True Out 699 False In 700 l False Out 700 False In 701
  • 为什么 CORS 默认禁用?

    好吧 首先 我绝对知道我们对此有很多答案 并且有大量关于该主题的文章 在输入以下内容之前 我刚刚阅读了这些答案 为什么没有凭据的 CORS 被禁止 https stackoverflow com questions 26306080 why
  • Zurb Foundation 5 - 行填充/边距

    我正在尝试为我的行创建背景颜色 但是当我设置背景颜色时 它会扩展到列的常规宽度 然后我尝试使用填充来缩小行 这有效 但使列更小 我需要以某种方式删除粉红色区域 仅保留红色背景 并保持列均匀 有任何想法吗 div class row styl
  • Apache Bench 和 POST 数据

    我正在尝试使用 apache bench 在我的 Rails 应用程序中加载测试创建操作 但 ab 似乎没有发送 POST 数据 尽管它确实正确提交了 POST 而不是 GET 请求 这是我运行的命令 ab n 1 p post v 4 h
  • 如何通过 Meteor.call() 访问服务器端变量?

    我认为在 Meteor 中定义服务器端类来存储有关系统的信息是明智的做法 该信息应由选定的用户访问 它不存储在 MongoDB 中 所以据我了解 订阅和发布不是一个选项 这是我的简化方法 if Meteor isServer serverV
  • 如何检查Paramiko是否成功将文件上传到SFTP服务器?

    我使用 Paramiko 将文件放入 SFTP 服务器 import paramiko transport paramiko Transport host port transport connect username username p
  • 禁用 HTML 中的 GIF 动画

    在 HTML 中 有没有办法在 标签中包含动画 GIF 但自动告诉 GIF 不要动画 我意识到用户可以通过按 ESC 或单击 停止 来停止动画 但我希望 GIF 根本不动画 我只想在一个特定页面上执行此操作 并且制作 1500 GIF 的单
  • Xcode 4.3.3 iPhone 5.1 模拟器经常挂起

    我最近一直在四处寻找是否有人遇到类似的问题 但找不到太多信息 大多数时候在模拟器中启动应用程序效果很好 但是模拟器每天都会挂起一两次 我必须强制退出它 XCode 说 在模拟器上运行 xyz 当您尝试在 XCode 中 停止 时 什么也不会
  • ng-bootstrap crash:如何应用动画?

    我正在使用折叠 https ng bootstrap github io components collapse https ng bootstrap github io components collapse 然而 它并没有动画 即使不在
  • Laravel sql server 更改架构的表名称

    我正在开发一个项目 我试图在 SQL Server 数据库上设置一些具有架构的表 因此我手动将表名称更改为迁移文件上的 schema name table name 并且它起作用了 所以这里是例子 Schema create elector
  • 如何在 Django Rest Framework 中过滤具有权限的用户相关记录

    我需要知道如何限制对经过身份验证的用户的访问 以便可以为以管理员身份登录的用户完整列出用户记录 而对于以用户身份登录的用户 只能列出 更新和创建他们的记录 目前我正在使用serializers ModelSerializer viewset
  • Knockout.js 嵌套可排序绑定

    我正在使用 knockout js 可排序插件 然而 我遇到了一个至今无法解决的问题 我有两个可排序的绑定 一个用于存储桶 另一个用于存储桶项目 我能够在存储桶之间重新排序存储桶项目 但是 我无法重新排序存储桶 你知道为什么会这样吗 我也使
  • Postgres 中动态基数的累积添加

    我在 Postgres 中有以下场景 我正在使用9 4 1 我有一个这种格式的表 create table test id serial val numeric not null created timestamp not null def
  • 合并从不同表投影到一个实体的两个 iqueryable

    我努力了这个答案 https stackoverflow com questions 4003813 how to merge two iqueryable lists This one https stackoverflow com qu
  • Golang 比较和更新来自两个不同映射字符串接口的键

    将两个 yaml 文件解组到两个不同的映射后 我想比较两个映射的键 外部键和内部键 因为它是嵌套映射 以及第一个映射 configMap 中是否存在任何键 外部或内部键 和第二张地图 userconfigMap 中不存在 我想将该密钥附加到
  • BoxLayout:无法设置子组件大小

    我有一个JFrame SuperTest and JPanel SuperLogin 登录面板具有用户名和密码输入字段以及登录按钮 我希望它看起来像这样 但如下图所示 输入字段的高度和宽度太大 超级测试 java import javax
  • Tridion 2009 TBB:如何确定页面是否已发布到特定发布目标?

    在使用 TOM NET API 的 TBB 中 我想获取已发布页面的列表 基本上我正在构建站点地图 我正在尝试确定 Tridion ContentManager CommunicationManagement Page 是否已发布 似乎没有
  • 通过 __VA_OPT__ 的递归宏

    编写递归宏是否合法 VA OPT GCC 和 Clang 似乎没有递归替换 但我不确定它是否是故意的 如 VA OPT 支持是最近才出现的 C 规范 19 3 1 3 VA OPT 否则 替换由扩展的结果组成 内容作为当前类函数宏的替换列表
  • 更高 API 上的 NetworkOnMainThreadException

    仅当我在更高的 API 上进行调试时 脚本才会强制关闭 16 但是当涉及到 API 时 它工作正常 10 这可能是我的项目设置问题吗 这是对服务器的一个简单请求 用于获取片段中的类别列表 画廊 java public class galle