我有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();
}
}