android安卓handler报空指针错

有2个按钮 一个是扫描一个查询 按扫描可以扫描二维码(二维码包含json信息)然后解析后显示在二维码信息那里 然后点查询 把二维码所含的json信息发送出去 得到返回值显示在返回信息那里 如果我只做查询 解析结果可以正常显示 如果我再点查询就会报一个空指针 说我解析那一步错 如果我不做解析 那发送也正常 有没有大神帮我看看为什么
错误信息
Process: com.abc.smartpos.cash, PID: 25086
java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Iterator java.util.List.iterator()' on a null object reference
at com.abc.smartpos.cash.ScanQR.parseJSONWithGSONForQR(ScanQR.java:138)
at com.abc.smartpos.cash.ScanQR$4.handleMessage(ScanQR.java:127)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)

我的代码

    String orderresult;
    Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            orderresult=msg.getData().getString("msg");
                        //单独执行parseJSONWithGSONForQR()正常显示,继续执行查询操作这里报空指针
            parseJSONWithGSONForQR(orderresult);
            responseinfo.setText(msg.getData().getString("JSON"));
        }
    };

//解析扫描得到的JSON数据后设置textview
    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();
    }
//发送JSON并得到返回值,用handler发送
    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();
        }
    }

图片说明

0

2个回答

你的jsonData为空

Message msg=new Message();
msg.getData().putString("JSON",responseJSON);
handler.sendMessage(msg);

然后执行这里时候
orderresult=msg.getData().getString("msg");
这个orderresult为空

然后
List transPackList = gson.fromJson(jsonData, new TypeToken>() {
}.getType());
这个jsonData就是传空了

0

//发送JSON并得到返回值,用handler发送
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("JSO

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!