起因:在android使用get请求获取验证码时需要重开一个线程,这就造成了我无法获取到从服务器后台返回的数据

解决方法:创建全局变量,将返回的数据解析后返回给handler,再在handler中将数据赋值给全局变量

部分代码如下:

private void getYzm(int money) {
// TODO Auto-generated method stub
String res = "";
Date nowTime = new Date();
SimpleDateFormat time = new SimpleDateFormat("yyMMddHHmm");
String tel = PhoneUtils.getPhoneNumber(context);
final String paramData = "imsi=" + imsi + "&imei=" + imei + "&tel="
+ tel + "&money=" + money + "&app="
+ app+ "&time=" + time.format(nowTime);
String resultCode; new Thread(){
public void run() {
final String gainCode = HttpRequest.sendGet(url,
paramData);
        // url是请求验证码地址,是一个全局变量,这里没有列出来,paramData是请求参数,HttpRequest是一个工具类,下面发链接
String resultCode;
JSONObject dataJson;
String orderid;
try {
dataJson = new JSONObject(gainCode);
resultCode = dataJson.getString("resultCode");
orderid=dataJson.getString("orderid");
if("200000".equals(resultCode)){
msg = handler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putString("orderid", orderid);// 将服务器返回的订单号传到Bundle中,,再通过handler传出
msg.setData(bundle);
msg.arg1 = 0; // 0为获取验证码成功
handler.sendMessage(msg);
}else{
msg = handler.obtainMessage();
msg.arg1 = 1; // -1为获取验证码失败
handler.sendMessage(msg);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }.start(); }
class MsgHandler extends Handler {
private Activity activity;
public MsgHandler(Activity activity){
this.activity=activity;
}
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch (msg.arg1) {
case 0:
dialog.show();
Bundle bundle=msg.getData();
orderid=bundle.getString("orderid");// 这里的orderid是一个全局变量
break;
case 1:
showInfo("获取验证码失败!");
break;
case 2:
showInfo("订购成功!");
break;
case 3:
showInfo("提交验证码错误,请重新测试!");
break;
default:
break;
}
super.handleMessage(msg);
}

android handler传递数据的更多相关文章

  1. Android Handler传递参数动态更新UI界面demo

    package com.example.demo_test; import android.app.Activity; import android.os.Bundle; import android ...

  2. 关于Android中传递数据的一些讨论--备用

    在Android中编写过程序的开发人员都知道.在Activity.Service等组件之间传递数据(尤其是复杂类型的数据)很不方便.一般可以使用Intent来传递可序列化或简单类型的数据.看下面的代码 ...

  3. Android之间传递数据包

    在Android中 ,我们知道,两个activity之间通讯要用到Intent类,传递简单数据的方式我们也已经知道了.那么,如何在两个activity之间传递数据包呢,这就要用到我们的Bundle类了 ...

  4. 关于Android中传递数据的一些讨论

    在Android中编写过程序的开发人员都知道.在Activity.Service等组件之间传递数据(尤其是复杂类型的数据)很不方便.一般可以使用Intent来传递可序列化或简单类型的数据.看下面的代码 ...

  5. Android开发—— 传递数据

    一:使用静态变量传递数据 (1)静态变量传递数据,在目标Activity中声明静态变量,然后使用setText()方法将静态变量的值导出即可: (2)静态变量传递数据,在主Activity中对目标Ac ...

  6. Android Intent传递数据

    刚开始看郭大神的<>,实现以下里面的一些例子.Intent传递数据. 我们利用显示的方式进行Intent的启动. 1.启动intent并输入数据. Intent intent=new In ...

  7. Android Activity传递数据使用getIntent()接收不到,揭秘Intent传递数据与Activity启动模式singleTask的关系。

    activity通过intent传递数据的时候,如果activity未启动,那么在这个刚启动的activity里通过getIntent()会获取到这个intent的数据.. 如果要启动的activit ...

  8. Android Bundle传递数据

    1.传递普通数据 Intent intent=new Intent(MainActivity.this,TwoActivity.class); Bundle bundle=new Bundle(); ...

  9. Android Intent 传递数据注意事项

    不要通过 Intent 在 Android 基础组件之间传递大数据(binder transaction缓存为 1MB),可能导致 OOM.

随机推荐

  1. express+node.js搭建的服务器和在sublimeServer下的页面请求报跨域错误

    1.前端页面使用vue中的axios请求nodejs响应.报以下错误: Failed to load http://localhost:3000/users/validate: Response to ...

  2. 配置thinkphp项目遇到的坑

    坑一: nginx配置必须改成伪静态配置 否则出现nginx 403 forbiddem错误 坑2: 缓存目录权限必须开放 坑3:服务器权限准备: 坑4:防火墙关闭 systemctl stop fi ...

  3. 树(6)-----DFS

    1.二叉树的反向层次遍历 def levelOrderBottom1(self, root): res = [] self.dfs(root, 0, res) return res def dfs(s ...

  4. 序列模型(5)-----双向神经网络(BRNN)和深层循环神经网络(Deep RNN)

    一.双向循环神经网络BRNN 采用BRNN原因: 双向RNN,即可以从过去的时间点获取记忆,又可以从未来的时间点获取信息.为什么要获取未来的信息呢? 判断下面句子中Teddy是否是人名,如果只从前面两 ...

  5. Laravel的维护模式

    1.开启维护模式:  php artisan down 2.关闭维护模式:php artisan up 3.当应用处于维护模式时,所有的路由都会指向一个自定义的视图.这对于更新应用或执行维护任务时临时 ...

  6. 一次 Laravel 性能分析全程笔记

    大家都知道 laravel 项目写起来是挺爽,但是在生产环境性能不高,我们来抽丝剥茧分析我自己项目的运行时间消耗: Bootstrap 耗时 步骤 耗时 Illuminate\Foundation\B ...

  7. C语言与java的区别

    相同的地方: 1.语法类似:由于Java可以算是从C++发展而来的,因此Java与C语言的语法比较类似 2.编程的熟练程度就是对语言程序库的掌握程度: 从某种程度上来说,编程语言都是由语法和相应的程序 ...

  8. Github+Jekyll 搭建个人网站详细教程

    GitHub搭建个人网站,大家在网上一搜能搜到一大把的教程,但是大部分都讲的差不多,并不能满足自己想搭建的网站详细需求.我之前在搭建本站的时候也是查了较多资料,学习了下jekyll语法,参考了几个主题 ...

  9. 修改struts2自定义标签的源代码,在原有基础上增加功能(用于OA项目权限判断,是否显示某个权限)

    OA项目在做权限判断时  原始方式: 现在完成的功能 :通过改变struts2自定标签源代码   在原有的基础上  增加判断权限的功能  而页面上使用标签的方式 还是下图 步骤: 打开文件 搜索< ...

  10. jQuery练习总结(一)

    第一个jQuery程序: 注意:使用jQuery时候定义单击事件使用的方法是click(function(){处理单击事件产生时所要执行的代码}) , 而JavaScript定义的单击事件则是 xx. ...