1. First Of All we will create Registration Xml According to the Fields you mentioned(You can add your themes and also creativity to it if you want it basically a designing part).
Following will be the structure:-
Code For the same(activity_register.xml):-
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/nestedScrollView" android:background="" android:padding="20dp" tools:context="activities.LoginActivity"> <android.support.v7.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.AppCompatImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="40dp" android:src="@drawable/logo" /> <android.support.design.widget.TextInputLayout android:id="@+id/textInputLayoutName" android:layout_width="match_parent" android:textColorHint="#000000" android:layout_height="wrap_content" android:layout_marginTop="40dp" > <android.support.design.widget.TextInputEditText android:id="@+id/textInputEditTextName" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_name" android:inputType="text" android:maxLines="1" android:textColor="@color/colorText" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:id="@+id/textInputLayoutStudentId" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColorHint="#000000" android:layout_marginTop="20dp" > <android.support.design.widget.TextInputEditText android:id="@+id/textInputEditTextStudentId" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_sid" android:inputType="text" android:maxLines="1" android:textColor="@color/colorText" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:id="@+id/textInputLayoutEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColorHint="#000000" android:layout_marginTop="20dp" > <android.support.design.widget.TextInputEditText android:id="@+id/textInputEditTextEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_email" android:inputType="text" android:maxLines="1" android:textColor="@color/colorText" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:id="@+id/textInputLayoutPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColorHint="#000000" android:layout_marginTop="20dp" > <android.support.design.widget.TextInputEditText android:id="@+id/textInputEditTextPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_password" android:inputType="textPassword" android:maxLines="1" android:textColor="@color/colorText" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:id="@+id/textInputLayoutConfirmPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColorHint="#000000" android:layout_marginTop="20dp" > <android.support.design.widget.TextInputEditText android:id="@+id/textInputEditTextConfirmPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_confirm_password" android:inputType="textPassword" android:maxLines="1" android:textColor="@color/colorText" /> </android.support.design.widget.TextInputLayout> <android.support.v7.widget.AppCompatButton android:id="@+id/appCompatButtonRegister" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="40dp" android:textColor="@color/colorText" android:background="@color/colorTextHint" android:text="@string/text_register" /> <android.support.v7.widget.AppCompatTextView android:id="@+id/appCompatTextViewLoginLink" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:gravity="center" android:text="@string/text_member" android:textSize="16sp" android:textColor="@color/colorText" /> </android.support.v7.widget.LinearLayoutCompat>
2. Now moving on to Login XML(I have Implemented with email you can make some changes to get it to student id though both are unique):-
Structure:-
code for the same(activity_login):-
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nestedScrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".activities.LoginActivity"> <android.support.v7.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.AppCompatImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="40dp" android:src="@drawable/logo" /> <android.support.design.widget.TextInputLayout android:id="@+id/textInputLayoutEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColorHint="#000000" android:layout_marginTop="40dp" > <android.support.design.widget.TextInputEditText android:id="@+id/textInputEditTextEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_email" android:inputType="text" android:maxLines="1" android:textColor="@color/colorText" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:id="@+id/textInputLayoutPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColorHint="#000000" android:layout_marginTop="20dp" > <android.support.design.widget.TextInputEditText android:id="@+id/textInputEditTextPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_password" android:inputType="textPassword" android:maxLines="1" android:textColor="@color/colorText" /> </android.support.design.widget.TextInputLayout> <android.support.v7.widget.AppCompatButton android:id="@+id/appCompatButtonLogin" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="40dp" android:textColor="@color/colorText" android:background="@color/colorTextHint" android:text="@string/text_login" /> <android.support.v7.widget.AppCompatTextView android:id="@+id/textViewLinkRegister" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:gravity="center" android:text="@string/text_not_member" android:textSize="16sp" android:textColor="@color/colorText" /> <android.support.v7.widget.AppCompatTextView android:id="@+id/forgotPassword" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:gravity="center" android:text="Forgot password?" android:textSize="16sp" android:textColor="@color/colorText" /> </android.support.v7.widget.LinearLayoutCompat> </android.support.v4.widget.NestedScrollView>
3. Forgot Password Screen Xml
Structure:-
code for the same(activity_forgotpassword):-
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nestedScrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".activities.LoginActivity"> <android.support.v7.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.AppCompatImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="40dp" android:src="@drawable/logo" /> <android.support.design.widget.TextInputLayout android:id="@+id/textInputLayoutEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColorHint="#000000" android:layout_marginTop="40dp" > <android.support.design.widget.TextInputEditText android:id="@+id/textInputEditTextEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_email" android:inputType="text" android:maxLines="1" android:textColor="@color/colorText" /> </android.support.design.widget.TextInputLayout> <android.support.v7.widget.AppCompatButton android:id="@+id/appCompatButtonConfirm" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="40dp" android:textColor="@color/colorText" android:background="@color/colorTextHint" android:text="Confirm" /> </android.support.v7.widget.LinearLayoutCompat> </android.support.v4.widget.NestedScrollView>
4. Confirm forgot password Xml
Structure of XML File
code for the same(activity_confirmforgotpassword):-
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nestedScrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".activities.LoginActivity"> <android.support.v7.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.AppCompatImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="40dp" android:src="@drawable/logo" /> <android.support.design.widget.TextInputLayout android:id="@+id/textInputLayoutEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColorHint="#000000" android:layout_marginTop="40dp" > <android.support.design.widget.TextInputEditText android:id="@+id/textInputpass" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Password" android:inputType="textPassword" android:maxLines="1" android:textColor="@color/colorText" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:id="@+id/textInputConfirmPass" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColorHint="#000000" android:layout_marginTop="40dp" > <android.support.design.widget.TextInputEditText android:id="@+id/textInputConfirmPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Confirm password" android:inputType="textPassword" android:maxLines="1" android:textColor="@color/colorText" /> </android.support.design.widget.TextInputLayout> <android.support.v7.widget.AppCompatButton android:id="@+id/appCompatButtonReset" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="40dp" android:textColor="@color/colorText" android:background="@color/colorTextHint" android:text="Reset" /> </android.support.v7.widget.LinearLayoutCompat> </android.support.v4.widget.NestedScrollView>
5. Activity for users xml:-
Contains No structure Only definition through code
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/text1" android:layout_marginTop="20dp" android:layout_marginLeft="20dp" android:textSize="20sp" android:textStyle="bold" android:padding="16dp" android:textColor="@color/colorText"/> </LinearLayout>
Now Moving on to Colors.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#FF4081</color> <color name="colorText">#FFFFFF</color> <color name="colorTextHint">#51d8c7</color> </resources>
Styles and Strings Xml
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> </resources>
<resources> <string name="app_name">SqliteLogin</string> <string name="hint_name">Name</string> <string name="hint_sid">Student Id</string> <string name="hint_email">Email</string> <string name="hint_password">Password</string> <string name="hint_confirm_password">Confirm Password</string> <string name="text_login">Login</string> <string name="text_register">Register</string> <string name="error_message_name">Enter Full Name</string> <string name="error_message_email">Enter Valid Email</string> <string name="error_message_age">Enter Age</string> <string name="error_message_password">Enter Password</string> <string name="success_message">Registration Successful</string> <string name="text_not_member">No account yet? Create one</string> <string name="text_already_member">Already a member? Login</string> <string name="error_email_exists">Email Already Exists</string> <string name="error_password_match">Password Does Not Matches</string> <string name="error_valid_email_password">Wrong Email or Password</string> <string name="text_member">Already a member? Login</string> </resources>
As you have seen the structure of our register xml thus you can have a fair idea of what our Database is gonna Looklike,Moving on to it By creating Package sql in Java Portion:-
Code for Our DatabaseHelper in the sql Package:-
package com.delaroystudios.sqlitelogin.sql; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import com.delaroystudios.sqlitelogin.model.User; /** * Created by delaroy on 3/27/17. */ public class DatabaseHelper extends SQLiteOpenHelper{ private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "UserManager.db"; private static final String TABLE_USER = "user"; private static final String COLUMN_USER_ID = "user_id"; private static final String COLUMN_USER_NAME = "user_name"; private static final String COLUMN_USER_EMAIL = "user_email"; private static final String COLUMN_USER_PASSWORD = "user_password"; private String CREATE_USER_TABLE = "CREATE TABLE " + TABLE_USER + "(" + COLUMN_USER_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_USER_NAME + " TEXT," + COLUMN_USER_EMAIL + " TEXT," + COLUMN_USER_PASSWORD + " TEXT" + ")"; private String DROP_USER_TABLE = "DROP TABLE IF EXISTS " + TABLE_USER; public DatabaseHelper(Context context){ super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db){ db.execSQL(CREATE_USER_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ db.execSQL(DROP_USER_TABLE); onCreate(db); } public void addUser(User user){ SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_USER_NAME, user.getName()); values.put(COLUMN_USER_EMAIL, user.getEmail()); values.put(COLUMN_USER_PASSWORD, user.getPassword()); db.insert(TABLE_USER, null, values); db.close(); } public void updatePassword(String email, String password){ SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_USER_PASSWORD, password); db.update(TABLE_USER, values, COLUMN_USER_EMAIL+" = ?",new String[] { email }); db.close(); } public boolean checkUser(String email){ String[] columns = { COLUMN_USER_ID }; SQLiteDatabase db = this.getWritableDatabase(); String selection = COLUMN_USER_EMAIL + " = ?"; String[] selectionArgs = { email }; Cursor cursor = db.query(TABLE_USER, columns, selection, selectionArgs, null, null, null); int cursorCount = cursor.getCount(); cursor.close(); db.close(); if (cursorCount > 0){ return true; } return false; } public boolean checkUser(String email, String password){ String[] columns = { COLUMN_USER_ID }; SQLiteDatabase db = this.getWritableDatabase(); String selection = COLUMN_USER_EMAIL + " = ?" + " AND " + COLUMN_USER_PASSWORD + " =?"; String[] selectionArgs = { email, password }; Cursor cursor = db.query(TABLE_USER, columns, selection, selectionArgs, null, null, null); int cursorCount = cursor.getCount(); cursor.close(); db.close(); if (cursorCount > 0){ return true; } return false; } }
Now User Class(Initialisation of Our Register Parameters):-
package com.delaroystudios.sqlitelogin.model; /** * Created by delaroy on 3/27/17. */ public class User { private int id; private String name; private String sid; private String email; private String password; public User(String sid) { this.sid = sid; } public int getId(){ return id; } public void setId(int id){ this.id = id; } public String getName(){ return name; } public void setName(String name){ this.name = name; } public String getSid(){ return sid; } public void setSid(String sid){ this.sid = sid; } public String getEmail(){ return email; } public void setEmail(String email){ this.email = email; } public String getPassword(){ return password; } public void setPassword(String password){ this.password = password; } }
Now Regiser_Activity.java
package com.delaroystudios.sqlitelogin.activities; import android.os.Bundle; import android.support.design.widget.Snackbar; import android.support.design.widget.TextInputEditText; import android.support.design.widget.TextInputLayout; import android.support.v4.widget.NestedScrollView; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.AppCompatButton; import android.support.v7.widget.AppCompatTextView; import android.view.View; import com.delaroystudios.sqlitelogin.R; import com.delaroystudios.sqlitelogin.helper.InputValidation; import com.delaroystudios.sqlitelogin.model.User; import com.delaroystudios.sqlitelogin.sql.DatabaseHelper; /** * Created by delaroy on 3/27/17. */ public class RegisterActivity extends AppCompatActivity implements View.OnClickListener { private final AppCompatActivity activity = RegisterActivity.this; private NestedScrollView nestedScrollView; private TextInputLayout textInputLayoutName; private TextInputLayout textInputLayoutSid; private TextInputLayout textInputLayoutEmail; private TextInputLayout textInputLayoutPassword; private TextInputLayout textInputLayoutConfirmPassword; private TextInputEditText textInputEditTextName; private TextInputEditText textInputEditTextLayoutSid; private TextInputEditText textInputEditTextEmail; private TextInputEditText textInputEditTextPassword; private TextInputEditText textInputEditTextConfirmPassword; private AppCompatButton appCompatButtonRegister; private AppCompatTextView appCompatTextViewLoginLink; private InputValidation inputValidation; private DatabaseHelper databaseHelper; private User user; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); getSupportActionBar().hide(); initViews(); initListeners(); initObjects(); } private void initViews(){ nestedScrollView = (NestedScrollView) findViewById(R.id.nestedScrollView); textInputLayoutName = (TextInputLayout) findViewById(R.id.textInputLayoutName); textInputLayoutSid = (TextInputLayout) findViewById(R.id.textInputEditTextStudentId); textInputLayoutEmail = (TextInputLayout) findViewById(R.id.textInputLayoutEmail); textInputLayoutPassword = (TextInputLayout) findViewById(R.id.textInputLayoutPassword); textInputLayoutConfirmPassword = (TextInputLayout) findViewById(R.id.textInputLayoutConfirmPassword); textInputEditTextName = (TextInputEditText) findViewById(R.id.textInputEditTextName); textInputEditTextLayoutSid = (TextInputEditText) findViewById(R.id.textInputEditTextStudentId); textInputEditTextEmail = (TextInputEditText) findViewById(R.id.textInputEditTextEmail); textInputEditTextPassword = (TextInputEditText) findViewById(R.id.textInputEditTextPassword); textInputEditTextConfirmPassword = (TextInputEditText) findViewById(R.id.textInputEditTextConfirmPassword); appCompatButtonRegister = (AppCompatButton) findViewById(R.id.appCompatButtonRegister); appCompatTextViewLoginLink = (AppCompatTextView) findViewById(R.id.appCompatTextViewLoginLink); } private void initListeners(){ appCompatButtonRegister.setOnClickListener(this); appCompatTextViewLoginLink.setOnClickListener(this); } private void initObjects(){ inputValidation = new InputValidation(activity); databaseHelper = new DatabaseHelper(activity); user = new User(textInputLayoutSid.toString()); } @Override public void onClick(View v){ switch (v.getId()){ case R.id.appCompatButtonRegister: postDataToSQLite(); break; case R.id.appCompatTextViewLoginLink: finish(); break; } } private void postDataToSQLite(){ if (!inputValidation.isInputEditTextFilled(textInputEditTextName, textInputLayoutName, getString(R.string.error_message_name))) { return; } if (!inputValidation.isInputEditTextFilled(textInputEditTextEmail, textInputLayoutEmail, getString(R.string.error_message_email))) { return; } if (!inputValidation.isInputEditTextEmail(textInputEditTextEmail, textInputLayoutEmail, getString(R.string.error_message_email))) { return; } if (!inputValidation.isInputEditTextFilled(textInputEditTextPassword, textInputLayoutPassword, getString(R.string.error_message_password))) { return; } if (!inputValidation.isInputEditTextMatches(textInputEditTextPassword, textInputEditTextConfirmPassword, textInputLayoutConfirmPassword, getString(R.string.error_password_match))) { return; } if (!databaseHelper.checkUser(textInputEditTextEmail.getText().toString().trim())) { user.setName(textInputEditTextName.getText().toString().trim()); user.setEmail(textInputEditTextEmail.getText().toString().trim()); user.setPassword(textInputEditTextPassword.getText().toString().trim()); databaseHelper.addUser(user); // Snack Bar to show success message that record saved successfully Snackbar.make(nestedScrollView, getString(R.string.success_message), Snackbar.LENGTH_LONG).show(); emptyInputEditText(); } else { // Snack Bar to show error message that record already exists Snackbar.make(nestedScrollView, getString(R.string.error_email_exists), Snackbar.LENGTH_LONG).show(); } } private void emptyInputEditText(){ textInputEditTextName.setText(null); textInputEditTextEmail.setText(null); textInputEditTextPassword.setText(null); textInputEditTextConfirmPassword.setText(null); } }
Login Activity:-
package com.delaroystudios.sqlitelogin.activities; import android.content.Intent; import android.support.design.widget.Snackbar; import android.support.design.widget.TextInputEditText; import android.support.design.widget.TextInputLayout; import android.support.v4.widget.NestedScrollView; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.AppCompatButton; import android.support.v7.widget.AppCompatTextView; import android.view.View; import com.delaroystudios.sqlitelogin.R; import com.delaroystudios.sqlitelogin.helper.InputValidation; import com.delaroystudios.sqlitelogin.sql.DatabaseHelper; public class LoginActivity extends AppCompatActivity implements View.OnClickListener { private final AppCompatActivity activity = LoginActivity.this; private NestedScrollView nestedScrollView; private TextInputLayout textInputLayoutEmail; private TextInputLayout textInputLayoutPassword; private TextInputEditText textInputEditTextEmail; private TextInputEditText textInputEditTextPassword; private AppCompatButton appCompatButtonLogin; private AppCompatTextView textViewLinkRegister; private AppCompatTextView textViewLinkForgotPassword; private InputValidation inputValidation; private DatabaseHelper databaseHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); getSupportActionBar().hide(); initViews(); initListeners(); initObjects(); } private void initViews(){ nestedScrollView = (NestedScrollView) findViewById(R.id.nestedScrollView); textInputLayoutEmail = (TextInputLayout) findViewById(R.id.textInputLayoutEmail); textInputLayoutPassword = (TextInputLayout) findViewById(R.id.textInputLayoutPassword); textInputEditTextEmail = (TextInputEditText) findViewById(R.id.textInputEditTextEmail); textInputEditTextPassword = (TextInputEditText) findViewById(R.id.textInputEditTextPassword); appCompatButtonLogin = (AppCompatButton) findViewById(R.id.appCompatButtonLogin); textViewLinkRegister = (AppCompatTextView) findViewById(R.id.textViewLinkRegister); textViewLinkForgotPassword = (AppCompatTextView) findViewById(R.id.forgotPassword); } private void initListeners(){ appCompatButtonLogin.setOnClickListener(this); textViewLinkRegister.setOnClickListener(this); textViewLinkForgotPassword.setOnClickListener(this); } private void initObjects(){ databaseHelper = new DatabaseHelper(activity); inputValidation = new InputValidation(activity); } @Override public void onClick(View v){ switch (v.getId()){ case R.id.appCompatButtonLogin: verifyFromSQLite(); break; case R.id.textViewLinkRegister: Intent intentRegister = new Intent(getApplicationContext(), RegisterActivity.class); startActivity(intentRegister); break; case R.id.forgotPassword: Intent intent = new Intent(getApplicationContext(), ForgotPassword.class); startActivity(intent); break; } } private void verifyFromSQLite(){ if (!inputValidation.isInputEditTextFilled(textInputEditTextEmail, textInputLayoutEmail, getString(R.string.error_message_email))) { return; } if (!inputValidation.isInputEditTextEmail(textInputEditTextEmail, textInputLayoutEmail, getString(R.string.error_message_email))) { return; } if (!inputValidation.isInputEditTextFilled(textInputEditTextPassword, textInputLayoutPassword, getString(R.string.error_message_email))) { return; } if (databaseHelper.checkUser(textInputEditTextEmail.getText().toString().trim() , textInputEditTextPassword.getText().toString().trim())) { Intent accountsIntent = new Intent(activity, UsersActivity.class); accountsIntent.putExtra("EMAIL", textInputEditTextEmail.getText().toString().trim()); emptyInputEditText(); startActivity(accountsIntent); finish(); } else { Snackbar.make(nestedScrollView, getString(R.string.error_valid_email_password), Snackbar.LENGTH_LONG).show(); } } private void emptyInputEditText(){ textInputEditTextEmail.setText(null); textInputEditTextPassword.setText(null); } }
Forgot Password Activity class
package com.delaroystudios.sqlitelogin.activities; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.Snackbar; import android.support.design.widget.TextInputEditText; import android.support.design.widget.TextInputLayout; import android.support.v4.widget.NestedScrollView; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.AppCompatButton; import android.support.v7.widget.AppCompatTextView; import android.view.View; import android.widget.Toast; import com.delaroystudios.sqlitelogin.R; import com.delaroystudios.sqlitelogin.helper.InputValidation; import com.delaroystudios.sqlitelogin.sql.DatabaseHelper; /** * Created by delaroy on 3/3/18. */ public class ForgotPassword extends AppCompatActivity { private TextInputEditText textInputEditTextEmail; private TextInputLayout textInputLayoutEmail; private AppCompatButton appCompatButtonConfirm; private InputValidation inputValidation; private DatabaseHelper databaseHelper; private NestedScrollView nestedScrollView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_forgotpassword); textInputEditTextEmail = (TextInputEditText) findViewById(R.id.textInputEditTextEmail); appCompatButtonConfirm = (AppCompatButton) findViewById(R.id.appCompatButtonConfirm); nestedScrollView = (NestedScrollView) findViewById(R.id.nestedScrollView); databaseHelper = new DatabaseHelper(this); inputValidation = new InputValidation(this); setTitle("Recover password"); appCompatButtonConfirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { verifyFromSQLite(); } }); } private void verifyFromSQLite(){ if (textInputEditTextEmail.getText().toString().isEmpty()){ Toast.makeText(this, "Please fill your email", Toast.LENGTH_SHORT).show(); return; } if (databaseHelper.checkUser(textInputEditTextEmail.getText().toString().trim())) { Intent accountsIntent = new Intent(this, ConfirmPassword.class); accountsIntent.putExtra("EMAIL", textInputEditTextEmail.getText().toString().trim()); emptyInputEditText(); startActivity(accountsIntent); } else { Snackbar.make(nestedScrollView, getString(R.string.error_valid_email_password), Snackbar.LENGTH_LONG).show(); } } private void emptyInputEditText(){ textInputEditTextEmail.setText(""); } }
Confirm Forgot Password :-
package com.delaroystudios.sqlitelogin.activities; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.Snackbar; import android.support.design.widget.TextInputEditText; import android.support.design.widget.TextInputLayout; import android.support.v4.widget.NestedScrollView; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.AppCompatButton; import android.view.View; import android.widget.Toast; import com.delaroystudios.sqlitelogin.R; import com.delaroystudios.sqlitelogin.helper.InputValidation; import com.delaroystudios.sqlitelogin.model.User; import com.delaroystudios.sqlitelogin.sql.DatabaseHelper; /** * Created by delaroy on 3/3/18. */ public class ConfirmPassword extends AppCompatActivity { private TextInputEditText textInputEditTextPassword; private TextInputEditText textInputEditTextConfirmPassword; private TextInputLayout textInputLayoutPassword; private TextInputLayout textInputLayoutConfirmPassword; private InputValidation inputValidation; private DatabaseHelper databaseHelper; private NestedScrollView nestedScrollView; private AppCompatButton appCompatButtonReset; String email; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_confirmpassword); inputValidation = new InputValidation(this); databaseHelper = new DatabaseHelper(this); textInputEditTextPassword = (TextInputEditText) findViewById(R.id.textInputpass); textInputEditTextConfirmPassword = (TextInputEditText) findViewById(R.id.textInputConfirmPassword); textInputLayoutPassword = (TextInputLayout) findViewById(R.id.textInputLayoutPassword); textInputLayoutConfirmPassword = (TextInputLayout) findViewById(R.id.textInputLayoutConfirmPassword); nestedScrollView = (NestedScrollView) findViewById(R.id.nestedScrollView); appCompatButtonReset = (AppCompatButton) findViewById(R.id.appCompatButtonReset); Intent intent = getIntent(); email = intent.getStringExtra("EMAIL"); setTitle("Reset password"); appCompatButtonReset.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { updatePassword(); } }); } private void updatePassword() { String value1 = textInputEditTextPassword.getText().toString().trim(); String value2 = textInputEditTextConfirmPassword.getText().toString().trim(); if (value1.isEmpty() && value2.isEmpty()){ Toast.makeText(this, "fill all fields ", Toast.LENGTH_LONG).show(); return; } if (!value1.contentEquals(value2)){ Toast.makeText(this, "password doesn't match", Toast.LENGTH_LONG).show(); return; } if (!databaseHelper.checkUser(email)) { Snackbar.make(nestedScrollView, "email doesn't exist", Snackbar.LENGTH_LONG).show(); return; } else { databaseHelper.updatePassword(email, value1); Toast.makeText(this, "password reset successfully", Toast.LENGTH_SHORT).show(); emptyInputEditText(); Intent intent = new Intent(this, LoginActivity.class); startActivity(intent); finish(); } } private void emptyInputEditText() { textInputEditTextPassword.setText(""); textInputEditTextConfirmPassword.setText(""); } }
As it is quite difficult to give explanation of each piece of code (in just 2 hrs) but i have tried best (firstly putting the XML structure in front of you So it will aid you in understanding most of the code in Java Class File).
Sample project -Android Studio connected with Sqlite databse or by using Mysql also . create an...
Android Problem Using JAVA Problem: You need to create an app on Android Studios that allows users to register and login into the system. The focus of this project is for you to create an app with several activities and has data validation. You should have for your app: A welcome screen (splash screen) with your app name and a picture. You should then move to a screen that asks the user for either to log in or to register....
NOTE: by using Android Studio .Please if you can provide SCREENSHOTSresults and process is the most important parts. NO ONLY NEED CODE BECAUSE I HAVE IT AND DID IT BUT NEED JUST YOUR RESULTS PHOTOS AND PROCESS THATS COULD HELP ME IN MY PROCESS. Project 2: Course Management App Project description: This android app helps student manage their courses. It enables a student to check the course details(lecturer, term, credits), browse his or her courses, add or remove a course....
Using Android Studios. Scenario: You recently started working as the mobile app developer for a University and have been assigned to build a mobile app that calculates the students' grade. Your app should contain following screens: Screen 1 Labels for subject1, subject2, and subject3 Textboxes for subject1, subject2, and subject3 Labels for MaxGrade, MinGrade, and Avg.Grade Submit button Once user clicks submit button, you need to display letter grade in a label Screen 2 Screen that allows students to register...
COP 2660, Programming for Mobile Devices Using Android Studio Create the working application as You can design a different listView of your choice. Try to have at-least 3 items in your listView. Zip your project file link and upload the code Purpose: is designed to assess the implementation of ListView activities.
"SEU Examinations System(SES),"automation of the examination activities of SEU that aims to bring in a centralized system that will ensure the operations in the context of an examination that can manage effectively. This system allows students to register the courses every semester themselves into the system by providing the details or by sharing details to admin at each branch. If the student is doing it by their own, then the system should check the login credentials and then the user...
Part I – Build a simple Servlet called MyServlet using NetBeans. Add this Servlet to you “ChattBank” Project. This MyServlet will display a message like “Go Braves” in a simple <h1> tag. Run this servlet from a Browser window by typing in the servlet name in the URL line. (ie. http://localhost:8080/ChattBank/MyServlet). Make sure that your Server is up and running before you test this Servlet. The best way to do this is just Run your “ChattBank” Project once before you...
The case study is about the analysis of the students’ understanding in analyzing a given scenario and practical skills to apply concepts and build diagrams studied in IT242 (Software Engineering). The case study consists of five parts. Students are required to answer all these parts based on the below scenario. The SEU has adopted a blending approach to electronic learning, requiring learners to attend class lectures (25%), while 75% of course time is assigned to virtual classes, learning forums and...
Instructions: You are required to create ERD and Enhanced ERD diagrams. And also translate your own created ERD & EERD diagrams in to Relational Model. Q# 1: Draw ER diagram based on the following database requirements. A Tutorial class may have one or more students. A student may be in one or more classes. Attributes of CLASS includes CLASS CODE, ROOM NAME and CLASS SIZE. Attributes of STUDENT include STUDENT ID, NAME and NATIONALITY. Translate your ER diagram in to...
Create a java project and create Student class. This class should have the following attributes, name : String age : int id : String gender : String gpa : double and toString() method that returns the Student's detail. Your project should contain a TestStudent class where you get the student's info from user , create student's objects and save them in an arralist. You should save at least 10 student objects in this arraylist using loop statement. Then iterate through...
If anyone here is a Java and Android Studio expert please I really need help fulfilling the requirements needed to make a Rock Paper Scissors game. I mainly need Java code to complete it I will post what I have so far I don't have much time left please if anyone can help me I would really appreciate it. Here's what the app is supposed to do... The player should be able to select either Rock, Paper, or Scissors.The app...