tankgoing 2017-12-31 01:00 采纳率: 100%
浏览 1106
已采纳

handler处理2个setText怎么弄 报空指针

我有2个按钮 先点扫描 然后得到二维码内容 显示在二维码信息那里(二维码本身就是JSON格式) 然后点查询 把二维码内容发送出去 得到返回值 显示在返回信息那里 2个方法的返回值都是通过handler发送然后再获取msg 再setText 然后我如果显示了二维码信息 再点查询的话就会退回上一级 报空指针 如果我单扫描二维码 不显示出来(还是获得了二维码信息 仅不setText) 那我点查询就可以显示返回值 请问要怎么解决 让我显示了二维码信息后还是可以显示返回值 新手小白。。。

    String orderresult;
    Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            orderresult=msg.getData().getString("msg");
            parseJSONWithGSONForQR(orderresult);
            responseinfo.setText(msg.getData().getString("JSON"));
        }
    };


    public void parseJSONWithGSONForQR(String jsonData) {
        String showorder;
        Gson gson = new Gson();
        List<TransPack> transPackList = gson.fromJson(jsonData, new TypeToken<List<TransPack>>() {
        }.getType());
        for (TransPack transPack : transPackList) {
            showorder="订单号:"+transPack.getId().toString()+"\n"+"意向金:"+transPack.getIntention().toString()+"\n"+"进度款:"+transPack.getProgress().toString()+"\n"+"设计费:"+transPack.getDesign().toString();
            orderinfo.setText(showorder);
        }
    }

    public void queryOrder(){
        new Thread(){
            public void run(){
                postJson();
            }
        }.start();
    }

    public String responseJSON;
    public static final String TAG="ScanQR";
    public static final MediaType JSON=MediaType.parse("application/json; charset=utf-8");
    public void postJson(){
        OkHttpClient okHttpClient=new OkHttpClient();
        RequestBody requestBody=RequestBody.create(JSON,orderresult);
        Request request=new Request.Builder()
                .url("http://api.jisuapi.com/iqa/query")
                .post(requestBody)
                .build();
        try{
            Response response=okHttpClient.newCall(request).execute();
            if(response.isSuccessful()){
                Log.i(TAG,response.body().string());
                responseJSON=response.toString();
                Message msg=new Message();
                msg.getData().putString("JSON",responseJSON);
                handler.sendMessage(msg);
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
  • 写回答

5条回答 默认 最新

  • 夜色下的云淡风轻 2018-01-08 02:23
    关注

    空指针的化msg.getData().getString("JSON")这段先判空,再setText;注意对象类型使用时都要注意空指针

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算