首页 > 学院 > 开发设计 > 正文

progressDialog的报错

2019-11-06 09:50:10
字体:
来源:转载
供稿:网友

哎,原谅我的笨。今天写代码碰到个很愚蠢的问题,在登录界面点击登录按钮后,需要网络请求,请求成功或者失败之前会有个一直转圈的dialog在转,当请求成功或者失败之后这个dialog会消失掉。但是我的代码一直会出现,输入错误的密码后,点击登录按钮,没有进入主页面(这很正常),再次点击登录按钮,就会出现当前页面闪退。并且报了这个错:java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.PRogressDialog.setMessage(java.lang.CharSequence)' on a null object reference。就这个问题纠结了我半天。

相关代码如下:

ProgressDialog mProgressDialog;
private void showProgressBar() {    mProgressDialog.setMessage("登录中......");    mProgressDialog.show();}
RequestParams params=new RequestParams();params.put("phonenumber", name);params.put("passWord", Encrypt.EncoderBymd5(password));AsyncUtils.get(GlobalURL.LOGIN_URL, params, new AsyncHttpResponseHandler() {    @Override    public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {        String response = new String(responseBody);        String result = null;        String response1=null;        try {            JSONObject object = new JSONObject(response);            result = object.optString("result");            response1=object.optString("message");        } catch (JSONException e) {            e.printStackTrace();        }        if (result.equals("success")) {            startActivity(new Intent(LoginActivity.this,MainActivity.class));            finish();        } else if(result.equals("failed")){            ToastUtils.set(LoginActivity.this,response1);            dismissDialog();        }    }    @Override    public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {        LogUtils.MyLogE("=====fail:"+new String(responseBody));        dismissDialog();    }});
public void dismissDialog(){    if (mProgressDialog!=null){        mProgressDialog.dismiss();        mProgressDialog=null;    }}
@Overrideprotected void onDestroy() {    dismissDialog();    super.onDestroy();}
查了相关资料才发现,只有在该页面消失的时候才能将dialog的引用置为空,也就是说只有在onDestory中才能将
mProgressDialog=null,其他地方都不能调用这句代码。所以将以上代码变成:
public void dismissDialog(){    if (mProgressDialog!=null){        mProgressDialog.dismiss();            }}
@Overrideprotected void onDestroy() {   
 if (mProgressDialog!=null){        mProgressDialog.dismiss();        mProgressDialog=null;    }    super.onDestroy();}就行了。哎,自己太笨了。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表