I can't get past this “Attempt to invoke virtual method on a null object reference” error.
So my Button
on the code below opens a CustomDialog
with an EditText
where the user can update his email address.
btnChangeEmail=(Button)findViewById(R.id.buttonChangeEmail);
btnChangeEmail.setOnClickListener(new OnClickListener() {
@Override
//Change Email Dialog
public void onClick (View arg0){
final Dialog dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.email_dialog);
//dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
Button dialogButton = (Button) dialog.findViewById(R.id.buttonSave);
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
EditText txtNewEmail = (EditText)findViewById(R.id.editTextNewEmail);
AlertDialog.Builder alert = new AlertDialog.Builder(context);
alert.setTitle("Are you sure?");
alert.setMessage("Use " + txtNewEmail.getText().toString() + " as your new address?");
alert.setCancelable(false);
alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alertDialog = alert.create();
alertDialog.show();
}
});
Button exitButton = (Button) dialog.findViewById(R.id.buttonExit);
exitButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
Window window = dialog.getWindow();
float h = (float) (getResources().getDisplayMetrics().heightPixels * .9);
float w = (float) (getResources().getDisplayMetrics().widthPixels);
int height = (int) h;
int width = (int) w;
window.setLayout(width, height);
}
}
By clicking the save button in the aforementioned custom dialog, it opens up an alert which prompts the user if he in fact wants to continue and overwrite his registered email address. I clearly instantiated the txtNewEmail but always get the null object reference error on the line where it says
alert.setMessage("Use " + txtNewEmail.getText().toString() + " as your new address?");
Any help is appreciated. Thank you.
Here is my full logcat error...
03-05 01:51:57.704 4512-4512/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.twenty, PID: 4512
java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
at com.example.twenty.SettingsActivity$4$1.onClick(SettingsActivity.java:193)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Your edittext inside onClickListener will also be using dialog to find id like this
EditText txtNewEmail = (EditText)dialog.findViewById(R.id.editTextNewEmail);