progressDialog的報錯

哎,原諒我的笨。今天寫代碼碰到個很愚蠢的問題,在登錄界面點擊登錄按鈕後,需要網絡請求,請求成功或者失敗之前會有個一直轉圈的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;
    }
}
@Override
protected void onDestroy() {
    dismissDialog();
    super.onDestroy();
}
查了相關資料才發現,只有在該頁面消失的時候才能將dialog的引用置爲空,也就是說只有在onDestory中才能將
mProgressDialog=null,其他地方都不能調用這句代碼。所以將以上代碼變成:
public void dismissDialog(){
    if (mProgressDialog!=null){
        mProgressDialog.dismiss();
        
    }
}
@Override
protected void onDestroy() {
   
 if (mProgressDialog!=null){
        mProgressDialog.dismiss();
        mProgressDialog=null;
    }
super.onDestroy();}就行了。哎,自己太笨了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章