TEL:400-8793-956
当前位置:程序、服务器

Android应用程序中的空指针异常错误

提问者: 近期获赞: 浏览人数: 发布时间:2021-01-28 13:13:32

 问:我在登录活动上单击登录按钮时遇到了一个问题。下面是我提到的调试日志: 

 
04-15 15:07:45.924 2533-2533 / volleyjson.androidhive.info.myapplication E / AndroidRuntime:致命例外:主
                                                                                         进程:volleyjson.androidhive.info.myapplication,PID:2533
                                                                                         java.lang。NullPointerException:尝试调用虚拟方法'boolean
 
上的空对象引用android.app.ProgressDialog.isShowing()”
                                                                                             在volleyjson.androidhive.info.myapplication.login.showProgressDialog(login.java:55)
                                                                                             在volleyjson.androidhive.info.myapplication.login.makeJsonObjReq(login.java :64),
                                                                                             位于volleyjson.androidhive.info.myapplication.login.onClick(login.java:120),
                                                                                             位于android.view.View.performClick(View.java:5637)
                                                                                             在android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                             在android.os.Handler.handleCallback(Handler.java:751)在android.view.View $ PerformClick.run
                                                                                             (View.java:22429                                                                                           在android。
                                                                                            android.app.ActivityThread.main上的os.Looper.loop(Looper.java:154)(ActivityThread.java:6119)
                                                                                             在
                                                                                             com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)的java.lang.reflect.Method.invoke(本机方法)
                                                                                             处在com.android.internal.os.ZygoteInit.main(ZygoteInit。 java:776)
 
 
这是我的login.java:
 
 
软件包volleyjson.androidhive.info.myapplication;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.View;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入com.android.volley.AuthFailureError;
导入com.android.volley.Request;
导入com.android.volley.Response;
导入com.android.volley.VolleyError;
导入com.android.volley.VolleyLog;
导入com.android.volley.toolbox.JsonObjectRequest;
导入volleyjson.androidhive.info.myapplication.app.AppController;
导入org.json.JSONObject;
导入java.util.HashMap;
导入java.util.Map;
@SuppressWarnings(“ ALL”)
公共类登录扩展活动实现View.OnClickListener {
    私有最终字符串TAG = login.class.getSimpleName();
    私有静态最终字符串LOGIN_URL =“ http://www.nishkarsh.co.in/api/login”;
    私有静态最终字符串KEY_EMAIL =“ email”;
    私有ProgressDialog pDialog;
    私人TextView t1;
    私人TextView t2;
    私人TextView t3;
    私人EditText ed1;
    私人按钮b1;
    私人字符串电子邮件;
    @Override
    受保护的无效onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login_dialogue);
        t1 =(TextView)findViewById(R.id.textView1);
        t2 =(TextView)findViewById(R.id.textView2);
        t3 =(TextView)findViewById(R.id.textView3);
        ed1 =(EditText)findViewById(R.id.RegEmail);
        b1 =(按钮)findViewById(R.id.btnLogin);
        b1.setOnClickListener(this);
        ProgressDialog pDialog =新的ProgressDialog(this);
        pDialog.setMessage(“ Loading ...”);
        pDialog.setCancelable(false);
    }
    私人无效showProgressDialog(){
        如果(!pDialog.isShowing())
            pDialog.show();
    }
    私人void hideProgressDialog(){
        如果(pDialog.isShowing())
            pDialog.hide();
    }
    私人无效makeJsonObjReq(){
        showProgressDialog();
        JsonObjectRequest jsonObjReq =新的JsonObjectRequest(Request.Method.POST,
                LOGIN_URL,空,
                新的Response.Listener <JSONObject>(){
                    @Override
                    公共无效onResponse(JSONObject response){
                        Log.d(TAG,response.toString());
                        openProfile();
                        pDialog.hide();
                    }
                },新的Response.ErrorListener(){
            @Override
            公共无效onErrorResponse(VolleyError错误){
                VolleyLog.d(TAG,“ Error:” + error.getMessage());
                hideProgressDialog();
            }
        }){
            / **
             *传递一些请求头
             * * /
            @Override
            公共Map <String,String> getHeaders()抛出AuthFailureError {
                HashMap <String,String>标头=新的HashMap <>();
                headers.put(“ Content-Type”,“ application / json”);
                返回标题;
            }
            @Override
            受保护的Map <String,String> getParams(){
                Map <String,String>参数= new HashMap <>();
                params.put(KEY_EMAIL,电子邮件);
                返回参数
            }
        };
        //将请求添加到请求队列
        字符串tag_json_obj =“ jsonObjReq”;
        AppController.getInstance()。addToRequestQueue(jsonObjReq,
                tag_json_obj);
        //取消请求
        // ApplicationController.getInstance()。getRequestQueue()。cancelAll(tag_json_obj);
    }
    私人void openProfile(){
        Intent intent = new Intent(login.this,MainActivity.class);
        intent.putExtra(KEY_EMAIL,email);
        startActivity(intent);
    }
    @Override
    public void onClick(View v){
        makeJsonObjReq();
    }
}
 
 
答:ProgressDialog pDialog = new ProgressDialog(this);
pDialog.setMessage(“ Loading ...”);
pDialog.setCancelable(false);
 
重新声明pDialog有一个局部变量,使实例变量黯然失色并阻止对其进行初始化。因此,解决方案只能对其进行初始化。  
 
pDialog =新的ProgressDialog(this);
pDialog.setMessage(“ Loading ...”);
pDialog.setCancelable(false);
上一篇: 如何解决Python循环函数错误?
下一篇: Android运行时异常错误