关灯谢谢 2017-11-08 04:00 采纳率: 40%
浏览 828
已采纳

急问!!求大神解答!!

附上代码:
successBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkEmailIsUse(inputUserEmailEt);//此处是进行网络请求,获得返回数据

            Log.d(TAG, "onClick: "+emailCanuse);

            switch (status){
                case 200:
                    if(!emailCanuse){
                        showDialog();
                    }
                    else {
                        Toast.makeText(getContext(),"账号不存在,请重新确认!",Toast.LENGTH_SHORT).show();
                    }
                    break;

            }

        }
    });

我想进行的操作是,利用网络请求获取的值,判断其是否符合条件,再进行弹框操作,但是问题是第一次点击没有反应而且emailCanuse的值为初始化的值且打印不了,第二次点击才有反应和正确赋值和调用里面的dialog
网络请求方面利用Gson解析返回的json数据:
CheckEmail ce = new CheckEmail();
Gson gson = new Gson();
ce = gson.fromJson(resData,CheckEmail.class);
status = ce.getStatus();
emailCanuse = ce.getData();
在这里获取到的值打印出来是正确的。

到底是什么原因啊?!!!求解答啊!!


  • 写回答

5条回答 默认 最新

  • 御姐乱太郎 2017-11-08 07:24
    关注

    checkEmailIsUse(inputUserEmailEt);这个方法估计是另开线程进行网络访问,网络访问是延时操作,emailCanuse是网络请求结果,你这里是switch直接写在checkEmailIsUse(inputUserEmailEt)后面就是switch跟网络访问线程同时进行,基于网络访问是演示操作,99%的可能switch完了,网络访问结果还没有得到,所你的结果打印是空,第二次点击才有是因为你打印的是第一次的结果,你应该这样checkEmailIsUse(inputUserEmailEt,callback(){});,在网络访问中加一个回调,在回调中进行结果的处理

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

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!