【问题标题】:Android - NullPointerException hashCode() on a null object Reference [duplicate]Android - 空对象参考上的 NullPointerException hashCode()
【发布时间】:2017-08-25 17:45:05
【问题描述】:

帮帮我,当我想将 JSON 从我的注册 (frmDaftar) 类发布到 WebService 时出现错误,错误代码是:java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.hashCode( )' 在空对象引用上 在 com.android.volley.Request.(Request.java:136)

public class frmDaftar extends AppCompatActivity {
Button btnDaftar, btnKembali;
EditText email, pass, nama;
AlertDialog alertDialog;
private static final String TAG = frmDaftar.class.getSimpleName();
SessionManager session;

private String EmailView;
private ProgressDialog pDialog;

private static final String Key_nama = "nama";
private static final String Key_email = "email";
private static final String Key_password = "password";
private static  final String url = "Webservice_Controller.URL_DAFTAR";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_frm_daftar);
    btnDaftar = (Button) findViewById(R.id.btnDaftar1);
    btnKembali = (Button) findViewById(R.id.btnKembali);
    email = (EditText) findViewById(R.id.txtEmailDaftar);
    pass = (EditText) findViewById(R.id.txtPasswordDaftar);
    nama = (EditText) findViewById(R.id.txtNamaDaftar);

    session = new SessionManager(getApplicationContext());
    btnDaftar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            btnDaftar.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    String emails = email.getText().toString().trim();
                    String passwords = pass.getText().toString().trim();
                    String namas = nama.getText().toString().trim();

                    registerUser(emails, passwords,namas);
                    //alertDialog.show();

                }
            });
        }
    });
    btnKembali.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(frmDaftar.this, frmLogin.class));
        }
    });


}

    private void initCustomAlertDialog(String EmailView) {
        View v = getLayoutInflater().inflate(R.layout.dialogverivikasi, null);
        TextView txtEmail = (TextView) findViewById(R.id.lblemailDaftar);
        //txtEmail.setText(EmailView);
        alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setView(v);
        alertDialog.setTitle("Verifikasi Email");
    }
private void registerUser(final String nama, final String email, final String pass){
    String tag_string_req = "req_register";
    pDialog.setMessage("Registering ...");
    showDialog();

    StringRequest stringRequest = new StringRequest(Request.Method.POST, Webservice_Controller.URL_DAFTAR,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try{
                        JSONObject jObj = new JSONObject(response);
                        boolean error = jObj.getBoolean("error");
                        Log.d(TAG, "Register Response: " + response.toString());
                        hideDialog();



                    }catch (JSONException e) {
                        e.printStackTrace();
                    } {

                    }
                    //Toast.makeText(DataSent.this, response, Toast.LENGTH_LONG).show();
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    //Toast.makeText(DataSent.this,error.toString(),Toast.LENGTH_LONG).show();
                    Log.e(TAG, "Registration Error: " + error.getMessage());
                    Toast.makeText(getApplicationContext(),
                            error.getMessage(), Toast.LENGTH_LONG).show();
                    hideDialog();
                }
            }){
        @Override
        protected Map<String,String> getParams(){
            Map<String, String> params = new HashMap<String, String>();
            params.put("name", nama);
            params.put("email", email);
            params.put("password", pass);;

            return params;
        }
    };

    AppController.getInstance().addToRequestQueue(stringRequest, tag_string_req);
}

这是我的 AppController

public class AppController extends Application {
public static final String TAG = AppController.class.getSimpleName();

private RequestQueue mRequestQueue;

private static AppController mInstance;

@Override
public void onCreate() {
    super.onCreate();
    mInstance = this;
}

public static synchronized AppController getInstance() {
    return mInstance;
}

public RequestQueue getRequestQueue() {
    if (mRequestQueue == null) {
        mRequestQueue = Volley.newRequestQueue(getApplicationContext());
    }

    return mRequestQueue;
}

public <T> void addToRequestQueue(Request<T> req, String tag) {
    req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
    getRequestQueue().add(req);
}

public <T> void addToRequestQueue(Request<T> req) {
    req.setTag(TAG);
    getRequestQueue().add(req);
}

public void cancelPendingRequests(Object tag) {
    if (mRequestQueue != null) {
        mRequestQueue.cancelAll(tag);
    }
}

}

请帮帮我,这是我的第一个 android 项目 :)

【问题讨论】:

    标签: java android dictionary nullpointerexception hashmap


    【解决方案1】:

    仔细检查您是否在 applicaiton 标记中添加了应用控制器。希望它能解决您的崩溃问题。

       <application
        android:name="AppController"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
    

    【讨论】:

      猜你喜欢
      • 2018-07-13
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 2020-06-11
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      相关资源
      最近更新 更多