2

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>
Matin
  • 3
  • 1
  • 1
    What is your log error message? – Hamed Goharshad Jul 24 '22 at 06:56
  • java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ecom/com.example.ecom.LoginActivity1}: java.lang.ClassCastException: com.rey.material.widget.CheckBox cannot be cast to android.widget.CheckBox ......this is my error – Adarsh Sharma Jul 25 '22 at 17:19

1 Answers1

2

You've imported the wrong CheckBox. So, change

import android.widget.CheckBox;

to

import com.rey.material.widget.CheckBox
Hamed Goharshad
  • 631
  • 4
  • 12
  • 2
    Please read [How do I write a good answer?](https://stackoverflow.com/help/how-to-answer). While this code block may answer the OP's question, this answer would be much more useful if you explain how this code is different from the code in the question, what you've changed, why you've changed it and why that solves the problem without introducing others. – Saeed Zhiany Jul 26 '22 at 03:17
  • @SaeedZhiany I think my answer was clear and about the explanation I think it's obvious that CheckBox has been imported wrong but I've added a short explanation. Anyway, Ty for your feedback! – Hamed Goharshad Jul 26 '22 at 10:25