This question already has an answer here:
AuthenticationActivity.java
public class AuthenticationActivity extends AppCompatActivity {
private EditText edtMobile,edtPassword;
private Button btnLogin;
private Button btnSignup;
DatabaseHelper databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_authentication);
edtMobile = (EditText) findViewById(R.id.edt_mobile);
edtPassword = (EditText) findViewById(R.id.edt_password);
btnLogin = (Button) findViewById(R.id.btn_login);
btnSignup = (Button) findViewById(R.id.btn_signup);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(AuthenticationActivity.this, "LOGED IN", Toast.LENGTH_SHORT).show();
String authenticationActivtyMobile = edtMobile.getText().toString();
String authenticationActivtyPassword = edtPassword.getText().toString();
//Mobile
if(authenticationActivtyMobile.length() == 10){
}else{
Toast.makeText(AuthenticationActivity.this, "Enter Only 10 Digit Number", Toast.LENGTH_SHORT).show();
return;
}
String phone = String.valueOf(authenticationActivtyMobile);
char c = phone.charAt(0);
if (c == '8' || c == '9' ||c =='7'){
}else if( c == '0' ||c == '1' ||c == '2' ||c == '3' ||c == '4' ||c == '5' ||c == '6')
{
Toast.makeText(AuthenticationActivity.this, "Number Must Begin with 9 8 7",Toast.LENGTH_SHORT).show();
return;
}
//Password
if(authenticationActivtyPassword.length() <4){
Toast.makeText(AuthenticationActivity.this, "Password Must Have Minimum 4 Character", Toast.LENGTH_SHORT).show();
return;
}else if(authenticationActivtyPassword.length()>=15){
Toast.makeText(AuthenticationActivity.this, "Password Can Have Maximum 8 Character", Toast.LENGTH_SHORT).show();
return;
}
String password =databaseHelper.search(authenticationActivtyMobile);
if (authenticationActivtyPassword.equals(password))
{
Toast.makeText(AuthenticationActivity.this, "LOGIN SUCCESS", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(AuthenticationActivity.this, "LOGIN FAILED", Toast.LENGTH_SHORT).show();
}
}
});
btnSignup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(AuthenticationActivity.this, "Opening MainActivity Page", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(AuthenticationActivity.this, MainActivity.class);
startActivity(intent);
}
});
}
MainActivity.java
public class MainActivity extends Activity implements OnClickListener{
private String firstName;
private String lastName;
private String mobile;
private String password;
private String email;
private EditText edtSignupFirstName;
private EditText edtSignupLastName;
private EditText edtSignupMobile;
private EditText edtSignupPassword;
private EditText edtSignupEmail;
private EditText edtId;
private Button btnSignupRegister;
private Button btnDelete;
DatabaseHelper db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new DatabaseHelper(getApplicationContext());
edtSignupFirstName=(EditText)findViewById(R.id.edt_signup_first_name);
edtSignupLastName=(EditText)findViewById(R.id.edt_signup_last_name);
edtSignupMobile=(EditText)findViewById(R.id.edt_signup_mobile);
edtSignupPassword=(EditText)findViewById(R.id.edt_signup_password);
edtSignupEmail=(EditText)findViewById(R.id.edt_signup_email);
edtId=(EditText)findViewById(R.id.edt_id);
btnSignupRegister=(Button)findViewById(R.id.btn_signup_register);
btnDelete=(Button)findViewById(R.id.btn_delete);
btnSignupRegister.setOnClickListener(this);
btnDelete.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v==findViewById(R.id.btn_signup_register))
{
AccountsModel accounts=new AccountsModel();
accounts.firstname=edtSignupFirstName.getText().toString();
accounts.lastname=edtSignupLastName.getText().toString();
accounts.password=edtSignupPassword.getText().toString();
accounts.mobile=edtSignupMobile.getText().toString();
accounts.email=edtSignupEmail.getText().toString();
db.addAccountDetials(accounts);
Toast.makeText(MainActivity.this, "DB ADDED", Toast.LENGTH_SHORT).show();
}
if (v==findViewById(R.id.btn_delete))
{
String account_id=edtId.getText().toString();
db.deleteEntry(Integer.parseInt(account_id));
Toast.makeText(MainActivity.this, "DB DELETED", Toast.LENGTH_SHORT).show();
}
}}
DatabaseHelper.java
public class DatabaseHelper extends SQLiteOpenHelper {
public static String dataBaseName = "Login.db";
private static final int dataBaseVersion = 1;
private static final String tableName = "Accounts";
private static String Key_Id = "id";
private static String Key_FirstName = "firstname";
private static String Key_LastName = "lastname";
private static String Key_Password = "password";
private static String Key_Mobile = "mobile";
private static String Key_Email = "email";
public static String tag = "tag";
private static final String createTableAccounts = "CREATE TABLE " + tableName + "( " + Key_Id + " INTEGER PRIMARY KEY AUTOINCREMENT, " + Key_FirstName + " TEXT, " + Key_LastName + " TEXT, " + Key_Password + " TEXT, " + Key_Mobile + " TEXT, " + Key_Email + " TEXT );";
public DatabaseHelper(Context context) {
super(context, dataBaseName, null, dataBaseVersion);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(createTableAccounts);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS" + createTableAccounts);
onCreate(db);
}
public long addAccountDetials(AccountsModel accounts) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Key_FirstName, accounts.firstname);
values.put(Key_LastName, accounts.lastname);
values.put(Key_Password, accounts.password);
values.put(Key_Mobile, accounts.mobile);
values.put(Key_Email, accounts.email);
long insert = db.insert(tableName, null, values);
return insert;
}
public int updateEntry(AccountsModel accounts) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Key_FirstName, accounts.firstname);
values.put(Key_LastName, accounts.lastname);
values.put(Key_Password, accounts.password);
values.put(Key_Mobile, accounts.mobile);
values.put(Key_Email, accounts.email);
return db.update(tableName, values, Key_Id + "=?", new String[]{String.valueOf(accounts.id)});
}
public void deleteEntry(long id) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(tableName, Key_Id + " = ?", new String[]{String.valueOf(id)});
}
public String search(String mobile) {
SQLiteDatabase db = this.getReadableDatabase();
String query = "SELECT mobile, password from " + tableName;
Cursor cursor = db.rawQuery(query, null);
String a, b;
b = "not found";
if (cursor.moveToFirst()) {
do {
a = cursor.getString(0);
if (a.equals(mobile)) {
b = cursor.getString(1);
break;
}
}
while (cursor.moveToFirst());
}
return b;
}}
when signup button clicked it intent to Mainactivity.java where details entered will store in database with DatabaseHelper.java;when i click register button in MainActivity.java detail entered are successfully stored in db;here when i click Login button in AuthenticationActivity.java edittext which has mobile number and password must refer in db,if it matches with db It must get Toast "Login Successfull" else "Login Failed".
my app get crash when run Shows "Unfortunately Stopped". Logcat attached below
11-06 16:56:06.437 1978-1978/com.example.rahul.logindatabasetask E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.rahul.logindatabasetask, PID: 1978 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.rahul.logindatabasetask.DatabaseHelper.search(java.lang.String)' on a null object reference at com.example.rahul.logindatabasetask.AuthenticationActivity$1.onClick(AuthenticationActivity.java:63) 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)
Aucun commentaire:
Enregistrer un commentaire