guipan0464 2019-07-25 19:54 采纳率: 0%
浏览 661
已结题

Android中如何把handlerMessage中返回的数据返回给主线程调用?

问题描述:我在主线程中调用WebService,通过handleMessage成功获取服务器返回的Json字符串。不过我还需要调用另外一个WebService的接口,需要把上一个返回的的字符作为传入参数。现在的问题是不知道如何把handleMessage中的变量返回到主线程中。请问该如何做到,代码中就是想在onCreate中获取instanceId这个参数,该如何实现?

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_scan);
    init() ;
    setListen();
    getData();

              private void getData(){
    new Thread() {
        public void run() {
            Looper.prepare();
            myscanData= WebServiceUtil.getscanlist(taskId,locationId,userId,tokenSecurityLogin,mHandler);
            System.out.println("扫描巡更点后:"+myscanData);  //获取巡更点的实例
            Toast.makeText(getApplication(),instanceId,Toast.LENGTH_SHORT).show();
            //show();
            Looper.loop();
        }
    }.start();
}

** Toast.makeText(getApplication(),instanceId,Toast.LENGTH_SHORT).show();
}
............................................

final Handler mHandler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch(msg.what){
case GET_XunJianScan:
System.out.println("进入线路巡更点");
XunJianInstanceBean bean=new XunJianInstanceBean();
if (!msg.obj.toString().equals("error")) {
try {
myScanList.clear();
String strByJson = msg.obj.toString();

                        //Json的解析类对象
                        JSONArray jsonArray = new JSONObject(strByJson).getJSONArray("lzq");

                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject obj = ((JSONObject) jsonArray.opt(i));
                            String ID = obj.getString("ID");
                            String Remark = obj.getString("Remark");
                            String taskid=obj.getString("taskid");
                            String locationid=obj.getString("locationid");
                            String uid=obj.getString("uid");
                            String createdate1=obj.getString("createdate1");
                            String place=obj.getString("place");
                            bean.setID(ID);
                            bean.setRemark(Remark);
                            bean.setTaskid(taskid);
                            bean.setLocationid(locationid);
                            bean.setUid(uid);
                            bean.setCreatedate1(createdate1);
                            bean.setPlace(place);
                        **    instanceId=ID;**

                        }

                    }
                    catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                else {
                    Toast.makeText(getApplication(), "加载巡检数据失败", Toast.LENGTH_SHORT).show();
                }
                break;
        }
        if (mProgressDialog != null) {
            mProgressDialog.dismiss();
        }
    }
};
  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-07-25 20:02
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常