On clicking a button In which I am Retrieving inserted data. But it shows null pointer Exception.
My app should show inserted data and the user enters data and time in an alert dialog box. But when I run my app crashes. I have check my logcat it showing following error
Java.lang.NullPointer Exception:Attempt to invoke a virtual method: 'aandroid.text.wideget.EditText().getText()'on a null object refrence at sana.com.Happymeal.Reservation$3.onClick(Reservation.java.98 I am a beginner and doing work in SQLite for the first time I have wasted 3 to 4 days on this error Please tell me the best solution.
<Here is Reservation classa>
package sana.com.happymeal;
import android.app.ActionBar;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.DatePicker;
import android.support.v7.widget.Toolbar;
import android.app.AlertDialog;
import android.widget.Toast;
import java.util.Calendar;
public class Reservation extends AppCompatActivity
{
Calendar clndr;
Button Pick_Date,pick_time;
EditText edDate,ed_firstname,ed_lastname,edTime,ed_email,edPassword,mem;
Integer members;
Button btn,btn_details, mBtnPickTime;
DatePickerDialog datePickerDialog;
TextView tv1, tv2, Time;
TimePickerDialog tpd;
DatabaseHelper databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reservation);
tv1 = (TextView) findViewById(R.id.res_table);
tv2 = (TextView) findViewById(R.id.text2);
mem = (EditText) findViewById(R.id.members);
btn = (Button) findViewById(R.id.booking_btn);
btn_details=(Button)findViewById(R.id.details);
edDate = (EditText) findViewById(R.id.ed_date);
Pick_Date = (Button) findViewById(R.id.btnPickDate);
pick_time=(Button)findViewById(R.id.btnPickTime);
edTime=(EditText)findViewById(R.id.ed_time);
databaseHelper = new DatabaseHelper(this);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_item);
AddData();
viewAll();
Pick_Date.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
clndr = Calendar.getInstance();
int day = clndr.get(Calendar.DAY_OF_MONTH);
int month = clndr.get(Calendar.MONTH);
int year = clndr.get(Calendar.YEAR);
datePickerDialog = new DatePickerDialog(Reservation.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int mYear, int mMonth, int mDay) {
edDate.setText(mDay + "/" + (mMonth + 1) + "/" + mYear);
}
}, year, month, day);
datePickerDialog.show();
}
});
Time = findViewById(R.id.ed_time);
mBtnPickTime = findViewById(R.id.btnPickTime);
mBtnPickTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
clndr = Calendar.getInstance();
int hour = clndr.get(Calendar.HOUR_OF_DAY);
int mint = clndr.get(Calendar.MINUTE);
tpd = new TimePickerDialog(Reservation.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int mhour, int mMint) {
Time.setText(mhour + ":" + mMint);
}
}, hour, mint, false);
tpd.show();
}
});
}
public void AddData() {
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Boolean isInserted= databaseHelper.InsertData(ed_firstname.getText().toString(),ed_lastname.getText().toString(),ed_email.getText().toString(),edPassword.getText().toString(),Integer.parseInt(mem.getText().toString()));
if(isInserted == true)
Toast.makeText(Reservation.this,"Data Inserted",Toast.LENGTH_LONG).show();
else
Toast.makeText(Reservation.this,"Data not Inserted",Toast.LENGTH_LONG).show();
}
});
}
public void viewAll() {
btn_details.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Cursor res = databaseHelper.getAllData();
if (res.getCount() == 0) {
// show message
showMessage("Error", "Nothing found");
return;
}
StringBuffer buffer = new StringBuffer();
while (res.moveToNext()) {
buffer.append("Id :" + res.getString(0) + "\n");
buffer.append("first_name:" + res.getString(1) + "\n");
buffer.append("Last_name :" + res.getString(2) + "\n");
buffer.append("Email :" + res.getString(3) + "\n");
buffer.append("Password :" + res.getString(4) + "\n");
buffer.append("Members :" + res.getString(5) + "\n");
buffer.append("Booked_at :" + res.getString(6) + "\n\n");
}
// Show all data
showMessage("Data", buffer.toString());
}
});
}
public void showMessage(String title , String Message){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(Message);
builder.show();
}
}
Here I have database hepler class. In which i have insert function and i add query to select all data from table and show it. Database Helper
package sana.com.happymeal;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.Cursor;
import android.provider.MediaStore;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class
DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "register.db";
public static final String TABLE_NAME = "registeruser";
public static final String ID = "id";
public static final String first_name = "firstname";
public static final String last_name = "lastname";
public static final String Email="email";
public static final String Password="password";
public static final String no_Ofmem="members";
public static final String Booked_at="date_time";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS registeruser(ID INTEGER PRIMARY KEY AUTOINCREMENT,first_name TEXT,last_name TEXT,Email TEXT,Password TEXT,no_Ofmem INTEGER ,Booked_at LONG)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
}
private String getDateTime(){
SimpleDateFormat dateFormat=new SimpleDateFormat(
"dd-MM-YYY HH:mm:ss", Locale.getDefault()
);
Date date=new Date();
return dateFormat.format(date);
}
public Boolean InsertData(String firstname,String lastname,String email,String password,Integer members) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(first_name, firstname);
contentValues.put(last_name, lastname);
contentValues.put(Email, email);
contentValues.put(Password, password);
contentValues.put(no_Ofmem, members);
contentValues.put(Booked_at, System.currentTimeMillis());
long result = db.insert(TABLE_NAME, null, contentValues);
if (result == -1) {
return false;
} else {
return true;
}
}
public Cursor getAllData() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("select * from "+TABLE_NAME,null);
return res;
}
> Login java file
package sana.com.happymeal;
import android.app.Notification;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Patterns;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.database.Cursor;
import android.content.Context;
public class LoginActivity extends AppCompatActivity {
EditText first_name;
EditText last_name;
EditText password;
EditText re_enterpass;
EditText email;
Button signin;
DatabaseHelper databaseHelper;
SQLiteDatabase sqLiteDatabaseObj;
String SQLiteDataBaseQueryHolder;
Cursor cursor;
String F_Result = "Not_Found";
Boolean EditTextEmptyHolder;
String FirstNameHolder,LastNameHolder, EmailHolder, PasswordHolder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
first_name = (EditText) findViewById(R.id.firstname);
last_name = (EditText) findViewById(R.id.lastname);
password = (EditText) findViewById(R.id.password);
email = (EditText) findViewById((R.id.email));
re_enterpass = (EditText) findViewById(R.id.confirm_password);
databaseHelper = new DatabaseHelper(this);
signin = (Button) findViewById(R.id.signinbtn);
signin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Creating SQLite database if dose n't exists
SQLiteDataBaseBuild();
// Creating SQLite table if dose n't exists.
SQLiteTableBuild();
CheckEditTextStatus();
// Method to check Email is already exists or not.
CheckingEmailAlreadyExistsOrNot();
CheckFinalResult();
// Empty EditText After done inserting process.
EmptyEditTextAfterDataInsert();
}
});
}
public void SQLiteDataBaseBuild() {
sqLiteDatabaseObj = openOrCreateDatabase(DatabaseHelper.DATABASE_NAME, Context.MODE_PRIVATE, null);
}
// SQLite table build method.
public void SQLiteTableBuild() {
sqLiteDatabaseObj.execSQL("CREATE TABLE IF NOT EXISTS " + DatabaseHelper.TABLE_NAME + "(" + DatabaseHelper.ID + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + DatabaseHelper.first_name + " VARCHAR, " + DatabaseHelper.last_name + " VARCHAR, " + DatabaseHelper.Email + " VARCHAR,"+DatabaseHelper.Password +"VARCHAR);");
}
// Insert data into SQLite database method.
public void InsertDataIntoSQLiteDatabase() {
// If editText is not empty then this block will executed.
if (EditTextEmptyHolder == true) {
// SQLite query to insert data into table.
SQLiteDataBaseQueryHolder = "INSERT INTO " + DatabaseHelper.TABLE_NAME + " (firstname,lastname,email,password) VALUES('" + FirstNameHolder + "', '" + LastNameHolder + "', '" + EmailHolder +" ', + '"+PasswordHolder+"');";
// Executing query.
sqLiteDatabaseObj.execSQL(SQLiteDataBaseQueryHolder);
// Closing SQLite database object.
sqLiteDatabaseObj.close();
// Printing toast message after done inserting.
Toast.makeText(LoginActivity.this, "User Registered Successfully", Toast.LENGTH_LONG).show();
}
// This block will execute if any of the registration EditText is empty.
else {
// Printing toast message if any of EditText is empty.
Toast.makeText(LoginActivity.this, "Please Fill All The Required Fields.", Toast.LENGTH_LONG).show();
}
}
public void EmptyEditTextAfterDataInsert(){
first_name.getText().clear();
last_name.getText().clear();
email.getText().clear();
password.getText().clear();
re_enterpass.getText().clear();
}
public void CheckEditTextStatus(){
// Getting value from All EditText and storing into String Variables.
FirstNameHolder = first_name.getText().toString() ;
EmailHolder = email.getText().toString();
PasswordHolder = password.getText().toString();
if(TextUtils.isEmpty(FirstNameHolder) ||TextUtils.isEmpty(LastNameHolder)|| TextUtils.isEmpty(EmailHolder) || TextUtils.isEmpty(PasswordHolder)){
EditTextEmptyHolder = false ;
}
else {
EditTextEmptyHolder = true ;
}
}
public void CheckingEmailAlreadyExistsOrNot() {
sqLiteDatabaseObj=databaseHelper.getWritableDatabase();
// Adding search email query to cursor.
cursor= sqLiteDatabaseObj.query(DatabaseHelper.TABLE_NAME, null, " " + DatabaseHelper.Email + "=?", new String[]{EmailHolder}, null, null, null);
while (cursor.moveToNext()) {
if (cursor.isFirst()) {
cursor.moveToFirst();
// If Email is already exists then Result variable value set as Email Found.
F_Result = "Email Found";
// Closing cursor.
cursor.close();
}
CheckFinalResult();
}
Intent intent=new Intent(LoginActivity.this,Restraunts.class);
startActivity(intent);
}
// Checking result
public void CheckFinalResult(){
// Checking whether email is already exists or not.
if(F_Result.equalsIgnoreCase("Email Found"))
{
// If email is exists then toast msg will display.
Toast.makeText(LoginActivity.this,"Email Already Exists",Toast.LENGTH_LONG).show();
}
else {
// If email already dose n't exists then user registration details will entered to SQLite database.
InsertDataIntoSQLiteDatabase();
}
F_Result = "Not_Found" ;
}
}
> Login xml file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".LoginActivity"
android:background="@drawable/background"
android:orientation="vertical"
android:gravity="center_horizontal">
<EditText
android:layout_width="290dp"
android:layout_height="40dp"
android:hint="@string/firstname"
android:layout_marginTop="140dp"
android:textColor="#000000"
android:id="@+id/firstname"
android:background="#ffffff"/>
<EditText
android:layout_width="290dp"
android:layout_height="40dp"
android:hint="@string/lastname"
android:layout_marginTop="20dp"
android:textColor="#000000"
android:background="#ffffff"
android:id="@+id/lastname"/>
<EditText
android:layout_width="290dp"
android:layout_height="40dp"
android:layout_marginTop="20dp"
android:textColor="#000000"
android:hint="@string/email"
android:background="#ffffff"
android:id="@+id/email"/>
<EditText
android:layout_width="290dp"
android:layout_height="40dp"
android:hint="@string/password"
android:background="#ffffff"
android:textColor="#000000"
android:id="@+id/password"
android:layout_marginTop="20dp"/>
<EditText
android:layout_width="290dp"
android:layout_height="40dp"
android:hint="@string/confirm_password"
android:background="#ffffff"
android:textColor="#000000"
android:id="@+id/confirm_password"
android:layout_marginTop="20dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sign in"
android:background="#F44336"
android:layout_marginTop="20dp"
android:id="@+id/signinbtn"/>
</LinearLayout>
> Login Java file
package sana.com.happymeal;
import android.app.Notification;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Patterns;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.database.Cursor;
import android.content.Context;
public class LoginActivity extends AppCompatActivity {
EditText first_name;
EditText last_name;
EditText password;
EditText re_enterpass;
EditText email;
Button signin;
DatabaseHelper databaseHelper;
SQLiteDatabase sqLiteDatabaseObj;
String SQLiteDataBaseQueryHolder;
Cursor cursor;
String F_Result = "Not_Found";
Boolean EditTextEmptyHolder;
String FirstNameHolder,LastNameHolder, EmailHolder, PasswordHolder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
first_name = (EditText) findViewById(R.id.firstname);
last_name = (EditText) findViewById(R.id.lastname);
password = (EditText) findViewById(R.id.password);
email = (EditText) findViewById((R.id.email));
re_enterpass = (EditText) findViewById(R.id.confirm_password);
databaseHelper = new DatabaseHelper(this);
signin = (Button) findViewById(R.id.signinbtn);
signin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Creating SQLite database if dose n't exists
SQLiteDataBaseBuild();
// Creating SQLite table if dose n't exists.
SQLiteTableBuild();
CheckEditTextStatus();
// Method to check Email is already exists or not.
CheckingEmailAlreadyExistsOrNot();
CheckFinalResult();
// Empty EditText After done inserting process.
EmptyEditTextAfterDataInsert();
}
});
}
public void SQLiteDataBaseBuild() {
sqLiteDatabaseObj = openOrCreateDatabase(DatabaseHelper.DATABASE_NAME, Context.MODE_PRIVATE, null);
}
// SQLite table build method.
public void SQLiteTableBuild() {
sqLiteDatabaseObj.execSQL("CREATE TABLE IF NOT EXISTS " + DatabaseHelper.TABLE_NAME + "(" + DatabaseHelper.ID + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + DatabaseHelper.first_name + " VARCHAR, " + DatabaseHelper.last_name + " VARCHAR, " + DatabaseHelper.Email + " VARCHAR,"+DatabaseHelper.Password +"VARCHAR);");
}
// Insert data into SQLite database method.
public void InsertDataIntoSQLiteDatabase() {
// If editText is not empty then this block will executed.
if (EditTextEmptyHolder == true) {
// SQLite query to insert data into table.
SQLiteDataBaseQueryHolder = "INSERT INTO " + DatabaseHelper.TABLE_NAME + " (firstname,lastname,email,password) VALUES('" + FirstNameHolder + "', '" + LastNameHolder + "', '" + EmailHolder +" ', + '"+PasswordHolder+"');";
// Executing query.
sqLiteDatabaseObj.execSQL(SQLiteDataBaseQueryHolder);
// Closing SQLite database object.
sqLiteDatabaseObj.close();
// Printing toast message after done inserting.
Toast.makeText(LoginActivity.this, "User Registered Successfully", Toast.LENGTH_LONG).show();
}
// This block will execute if any of the registration EditText is empty.
else {
// Printing toast message if any of EditText is empty.
Toast.makeText(LoginActivity.this, "Please Fill All The Required Fields.", Toast.LENGTH_LONG).show();
}
}
public void EmptyEditTextAfterDataInsert(){
first_name.getText().clear();
last_name.getText().clear();
email.getText().clear();
password.getText().clear();
re_enterpass.getText().clear();
}
public void CheckEditTextStatus(){
// Getting value from All EditText and storing into String Variables.
FirstNameHolder = first_name.getText().toString() ;
EmailHolder = email.getText().toString();
PasswordHolder = password.getText().toString();
if(TextUtils.isEmpty(FirstNameHolder) ||TextUtils.isEmpty(LastNameHolder)|| TextUtils.isEmpty(EmailHolder) || TextUtils.isEmpty(PasswordHolder)){
EditTextEmptyHolder = false ;
}
else {
EditTextEmptyHolder = true ;
}
}
public void CheckingEmailAlreadyExistsOrNot() {
sqLiteDatabaseObj=databaseHelper.getWritableDatabase();
// Adding search email query to cursor.
cursor= sqLiteDatabaseObj.query(DatabaseHelper.TABLE_NAME, null, " " + DatabaseHelper.Email + "=?", new String[]{EmailHolder}, null, null, null);
while (cursor.moveToNext()) {
if (cursor.isFirst()) {
cursor.moveToFirst();
// If Email is already exists then Result variable value set as Email Found.
F_Result = "Email Found";
// Closing cursor.
cursor.close();
}
CheckFinalResult();
}
Intent intent=new Intent(LoginActivity.this,Restraunts.class);
startActivity(intent);
}
// Checking result
public void CheckFinalResult(){
// Checking whether email is already exists or not.
if(F_Result.equalsIgnoreCase("Email Found"))
{
// If email is exists then toast msg will display.
Toast.makeText(LoginActivity.this,"Email Already Exists",Toast.LENGTH_LONG).show();
}
else {
// If email already dose n't exists then user registration details will entered to SQLite database.
InsertDataIntoSQLiteDatabase();
}
F_Result = "Not_Found" ;
}
}