I'm Doing some backend work for my app and I'm getting comeout from the app after clicking on login button.
MainActivity.java
My Default Activity.
public class MainActivity extends AppCompatActivity {
private Button joinNowButton, loginButton;
private ProgressDialog loadingBar;
private DataSnapshot dataSnapshot;
// private String parentDbName = "Users";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
joinNowButton = (Button) findViewById(R.id.main_join_now_btn);
loginButton = (Button) findViewById(R.id.main_login_btn);
loadingBar = new ProgressDialog(this);
Paper.init(this);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,LoginActivity.class);
startActivity(intent);
}
});
joinNowButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,RegisterActivity.class);
startActivity(intent);
}
});
String UserPhoneKey = Paper.book().read(Prevalent.UserPhoneKey);
String UserPasswordKey = Paper.book().read(Prevalent.UserPasswordKey);
if (UserPhoneKey!="" && UserPasswordKey!="")
{
if (!TextUtils.isEmpty(UserPhoneKey) && !TextUtils.isEmpty(UserPasswordKey))
{
AllowAccess(UserPhoneKey,UserPasswordKey);
loadingBar.setTitle("Already Logged in");
loadingBar.setMessage("Please wait...");
loadingBar.setCanceledOnTouchOutside(false);
loadingBar.show();
}
}
}
private void AllowAccess(final String phone, final String password) {
final DatabaseReference RootRef;
RootRef = FirebaseDatabase.getInstance().getReference();
RootRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (dataSnapshot.child("Users").child(phone).exists())
{
Users usersData = dataSnapshot.child("Users").child(phone).getValue(Users.class);
if (usersData.getPhone().equals(phone))
{
if (usersData.getPassword().equals(password))
{
Toast.makeText(MainActivity.this, "please wait, logging in...", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
Intent intent = new Intent(MainActivity.this,HomeActivity.class);
startActivity(intent);
}
else
{
loadingBar.dismiss();
Toast.makeText(MainActivity.this, "Incorrect Password.", Toast.LENGTH_SHORT).show();
}
}
}
else
{
Toast.makeText(MainActivity.this, "Account with this" + phone+ "number do not exists", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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=".MainActivity"
android:background="@drawable/welcome1">
<ImageView
android:id="@+id/app_logo"
android:layout_width="337dp"
android:layout_height="114dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="60dp"
android:src="@drawable/applogo" />
<TextView
android:id="@+id/app_slogan"
android:layout_width="277dp"
android:layout_height="53dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="185dp"
android:layout_marginEnd="68dp"
android:text="Selling only the best things online..."
android:textAlignment="center"
android:textColor="@color/black"
android:textSize="15sp"
android:textStyle="bold|italic" />
<Button
android:id="@+id/main_login_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_marginLeft="15dp"
android:layout_marginTop="10dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="10dp"
android:background="@drawable/buttons"
android:padding="10dp"
android:shadowColor="@color/teal_200"
android:text="Already have an Account ? Login"
android:textAllCaps="false"
android:textSize="18sp"
android:textStyle="bold" />
<Button
android:id="@+id/main_join_now_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/main_login_btn"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="5dp"
android:background="@drawable/input_design"
android:padding="10dp"
android:text="Join Now"
android:textAllCaps="false"
android:textSize="18sp"
android:textStyle="bold" />
LoginActivity.java
After clicking the button, I want the loginActivity to be opened from the main activity.
public class LoginActivity extends AppCompatActivity {
private EditText InputPhoneNumber,InputPassword;
private Button LoginButton;
private ProgressDialog loadingBar;
private DataSnapshot dataSnapshot;
private TextView AdminLink,NotAdminLink;
private String parentDbName = "Users";
private CheckBox chkBoxRememberMe;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
LoginButton = (Button) findViewById(R.id.login_btn);
InputPhoneNumber = (EditText) findViewById(R.id.login_phone_number_input);
InputPassword = (EditText) findViewById(R.id.login_password_input);
AdminLink = (TextView)findViewById(R.id.admin_panel_link);
NotAdminLink = (TextView)findViewById(R.id.not_admin_panel_link);
loadingBar = new ProgressDialog(this);
chkBoxRememberMe = (CheckBox)findViewById(R.id.remember_me_chkb);
Paper.init(this);
LoginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LoginUser();
}
});
AdminLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LoginButton.setText("Login Admin");
AdminLink.setVisibility(View.INVISIBLE);
NotAdminLink.setVisibility(View.VISIBLE);
parentDbName = "Admins";
}
});
NotAdminLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LoginButton.setText("Login");
AdminLink.setVisibility(View.VISIBLE);
NotAdminLink.setVisibility(View.INVISIBLE);
parentDbName = "Users";
}
});
}
private void LoginUser() {
String phone = InputPassword.getText().toString();
String password = InputPassword.getText().toString();
if (TextUtils.isEmpty(phone)){
Toast.makeText(this, "please write phone number...", Toast.LENGTH_SHORT).show();
}
else if (TextUtils.isEmpty(password)){
Toast.makeText(this, "please write your password...", Toast.LENGTH_SHORT).show();
}
else{
loadingBar.setTitle("Login Account");
loadingBar.setMessage("Please wait, While we are checking the credentials.");
loadingBar.setCanceledOnTouchOutside(false);
loadingBar.show();
AllowAccessToAccount(phone,password);
}
}
private void AllowAccessToAccount(final String phone, final String password) {
if (chkBoxRememberMe.isChecked()){
Paper.book().write(Prevalent.UserPhoneKey,phone);
Paper.book().write(Prevalent.UserPasswordKey,password);
}
final DatabaseReference RootRef;
RootRef = FirebaseDatabase.getInstance().getReference();
RootRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (dataSnapshot.child(parentDbName).child(phone).exists())
{
Users usersData = dataSnapshot.child(parentDbName).child(phone).getValue(Users.class);
if (usersData.getPhone().equals(phone))
{
if (usersData.getPassword().equals(password))
{
Toast.makeText(LoginActivity.this, "logged in Successfully...", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
Intent intent = new Intent(LoginActivity.this,HomeActivity.class);
startActivity(intent);
}
else
{
loadingBar.dismiss();
Toast.makeText(LoginActivity.this, "Incorrect Password.", Toast.LENGTH_SHORT).show();
}
}
}
else
{
Toast.makeText(LoginActivity.this, "Account with this" + phone+ "number do not exists", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}}
activity_login.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".LoginActivity"
android:background="@drawable/login">
<ImageView
android:id="@+id/register"
android:layout_width="300dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="250dp"
android:src="@drawable/applogo2" />
<EditText
android:id="@+id/login_phone_number_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/register"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/input_design"
android:hint="Phone Number"
android:inputType="number"
android:padding="20dp"
android:textColor="@color/white"
android:textColorHint="@color/white"
android:textSize="17sp"
android:textStyle="bold" />
<EditText
android:id="@+id/login_password_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/login_phone_number_input"
android:layout_marginLeft="15dp"
android:layout_marginTop="6dp"
android:layout_marginRight="15dp"
android:background="@drawable/input_design"
android:hint="Password"
android:inputType="textPassword"
android:padding="20dp"
android:textColor="@color/white"
android:textColorHint="@color/white"
android:textSize="17sp"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/linear_layout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@id/login_password_input"
android:layout_marginTop="5dp"
>
<com.rey.material.widget.CheckBox
android:id="@+id/remember_me_chkb"
style="@style/Material.Drawable.CheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="17dp"
android:gravity="center_vertical"
android:text="Remember me"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold"
app:cbd_strokeColor="@color/white"
tools:ignore="TouchTargetSizeCheck" />
<TextView
android:id="@+id/forget_password_link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Forget Password?"
android:textColor="@color/white"
android:textSize="17sp"
android:textStyle="bold"
android:layout_marginLeft="80dp" />
</LinearLayout>
<Button
android:id="@+id/login_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/linear_layout1"
android:layout_marginLeft="15dp"
android:layout_marginTop="5dp"
android:layout_marginRight="15dp"
android:background="@drawable/buttons"
android:padding="14dp"
android:shadowColor="@color/teal_200"
android:text="Login"
android:textAllCaps="false"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/admin_panel_link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I'm an Admin?"
android:layout_alignParentEnd="true"
android:layout_below="@id/login_btn"
android:textColor="@color/white"
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginEnd="23dp"
android:layout_marginLeft="80dp" />
<TextView
android:id="@+id/not_admin_panel_link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I'm not an Admin?"
android:layout_alignParentStart="true"
android:layout_below="@id/login_btn"
android:textColor="@color/white"
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginStart="25dp"
android:visibility="invisible"
android:layout_marginLeft="80dp" />
AndroidMainFest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.ecom">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/min1"
android:label="eCoM"
android:roundIcon="@mipmap/min1"
android:supportsRtl="true"
android:theme="@style/Theme.ECoM"
tools:targetApi="31">
<activity
android:name=".HomeActivity"
android:exported="false" />
<activity android:name=".RegisterActivity" />
<activity android:name=".LoginActivity" />
<activity android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>