SignUp/SignIn Fragment to Activity Error that load back the same fragment

Viewed 67

I am trying to sign in or sign up from fragments and after a successful sign in/sign up, it will load to an activity. The problem is when I clicked button sign in/sign up, it loads back to the same fragment instead of the HomeActivity.class. The LoginRegistrationActivity.class is the startup page of the app. I have checked that Sign in/Sign Up works fine, however unable to navigate to the HomeActivity.class after successful authentication. I am unsure if the AndroidManifest.xml is the problem.

SignIn.java fragment

package com.fyp.selfzen.fragments.O_LoginRegistration;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;

import com.fyp.selfzen.R;
import com.fyp.selfzen.activities.HomeActivity;
import com.fyp.selfzen.activities.LoginRegisrationActivity;
import com.fyp.selfzen.fragmentanimations.MoveAnimation;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;

import java.util.concurrent.Executor;
import cn.refactor.library.SmoothCheckBox;

public class SignIn extends Fragment{
    private EditText editText_email, editText_password;
    private String email, password;
    private FirebaseAuth firebaseAuth;
    private ProgressDialog progressDialog;


LoginRegisrationActivity loginRegistration;

public SignIn(LoginRegisrationActivity loginRegistration) {
    this.loginRegistration = loginRegistration;
}

public static SignIn newInstance(LoginRegisrationActivity loginRegistration) {
    SignIn fragment = new SignIn(loginRegistration);
    return fragment;
}

@Override
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
    if (enter) {
        return MoveAnimation.create(MoveAnimation.RIGHT, enter, 800);
    } else {
        return MoveAnimation.create(MoveAnimation.LEFT, enter, 800);
    }
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_login, container, false);

    progressDialog = new ProgressDialog(getContext());
    firebaseAuth = FirebaseAuth.getInstance();
    editText_email = view.findViewById(R.id.editText_email_login_activity);
    editText_password = view.findViewById(R.id.editText_password_login_activity);
    TextView button_login = view.findViewById(R.id.button_login_activity);
    TextView textView_signup_login = view.findViewById(R.id.textView_signup_login);
    final SmoothCheckBox checkBox = view.findViewById(R.id.checkbox_login_activity);
    checkBox.setChecked(false);



    button_login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            email = editText_email.getText().toString();
            password = editText_password.getText().toString();

            editText_email.clearFocus();
            editText_password.clearFocus();

            login(email, password);
        }
    });

    textView_signup_login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SignUp f2 = SignUp.newInstance(loginRegistration);
            loginRegistration.loadFrag(f2, getResources().getString(R.string.regis));
        }
    });

    return view;
}

private boolean isValidMail(String email) {
    return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}

public void login(String email, String password) {

    editText_email.setError(null);
    editText_password.setError(null);

    if (!isValidMail(email) || email.isEmpty()) {
        editText_email.requestFocus();
        editText_email.setError(getResources().getString(R.string.please_enter_email));
    }
    else if(password.isEmpty()){
        editText_password.requestFocus();
        editText_password.setError(getResources().getString(R.string.please_enter_password));
    }
    else {
        progressDialog.setMessage("Please wait...");
        progressDialog.show();
        progressDialog.setCanceledOnTouchOutside(false);

        firebaseAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    Toast.makeText(getContext(), "Successfully sign in!", Toast.LENGTH_LONG).show();
                  // Intent i = new Intent(loginRegistration, HomeActivity.class); //First try
                    Intent i = new Intent(getContext(), HomeActivity.class); //Second try
                    startActivity(i);
                    //loginRegistration.finish();
                } else {
                    Toast.makeText(getContext(), "Sign in failed", Toast.LENGTH_LONG).show();
                }
                progressDialog.dismiss();
            } //onComplete
        }); // firebaseAuth
    }// else
} // login end

}

SignUp.java fragments

package com.fyp.selfzen.fragments.O_LoginRegistration;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;

import com.fyp.selfzen.R;
import com.fyp.selfzen.activities.HomeActivity;
import com.fyp.selfzen.activities.LoginRegisrationActivity;
import com.fyp.selfzen.fragmentanimations.MoveAnimation;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;

import java.util.concurrent.Executor;

public class SignUp extends Fragment{
    private EditText editText_name, editText_email, editText_password, editText_phoneNo;
    private String name, email, password, phoneNo;
    private ProgressDialog progressDialog;
    private FirebaseAuth firebaseAuth;

LoginRegisrationActivity loginRegistration;

public SignUp(LoginRegisrationActivity loginRegistration) {
    this.loginRegistration = loginRegistration;
    // Required empty public constructor
}

public static SignUp newInstance(LoginRegisrationActivity loginRegistration) {
    SignUp fragment = new SignUp(loginRegistration);
    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_registration, container, false);

    progressDialog = new ProgressDialog(getContext());
    firebaseAuth = FirebaseAuth.getInstance();
    editText_name = view.findViewById(R.id.editText_name_register);
    editText_email = view.findViewById(R.id.editText_email_register);
    editText_password = view.findViewById(R.id.editText_password_register);
    editText_phoneNo = view.findViewById(R.id.editText_phoneNo_register);
    TextView button_submit = view.findViewById(R.id.button_submit);
    TextView textView_login = view.findViewById(R.id.textView_login_register);


    // Go to login page
    textView_login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SignIn f1 = SignIn.newInstance(loginRegistration);
            loginRegistration.loadFrag(f1, getResources().getString(R.string.login));
        }
    });


    button_submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            name = editText_name.getText().toString();
            email = editText_email.getText().toString();
            password = editText_password.getText().toString();
            phoneNo = editText_phoneNo.getText().toString();

            form();
        }
    });

    return view;
} //  on create view end

@Override
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
    if (enter) {
        return MoveAnimation.create(MoveAnimation.LEFT, enter, 800);
    } else {
        return MoveAnimation.create(MoveAnimation.RIGHT, enter, 800);
    }
}


private boolean isValidMail(String email) {
    return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}

public void form() {

    editText_name.setError(null);
    editText_email.setError(null);
    editText_password.setError(null);
    editText_phoneNo.setError(null);

    if (name.equals("") || name.isEmpty()) {
        editText_name.requestFocus();
        editText_name.setError(getResources().getString(R.string.please_enter_name));
    }
    else if (!isValidMail(email) || email.isEmpty()) {
        editText_email.requestFocus();
        editText_email.setError(getResources().getString(R.string.please_enter_email));
    }
    else if (password.equals("") || password.isEmpty()) {
        editText_password.requestFocus();
        editText_password.setError(getResources().getString(R.string.please_enter_password));
    }
    else if (phoneNo.equals("") || phoneNo.isEmpty()) {
        editText_phoneNo.requestFocus();
        editText_phoneNo.setError(getResources().getString(R.string.please_enter_phone));
    }
    else {
        editText_name.clearFocus();
        editText_email.clearFocus();
        editText_password.clearFocus();
        editText_phoneNo.clearFocus();
    }
    progressDialog.setMessage("Please wait...");
    progressDialog.show();
    progressDialog.setCanceledOnTouchOutside(false);
    firebaseAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener( new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if(task.isSuccessful()){
                Toast.makeText(getContext(), "Successfully registered!", Toast.LENGTH_LONG).show();
                //Intent i = new Intent(loginRegistration, HomeActivity.class);
                Intent i = new Intent(getActivity(), HomeActivity.class);
                startActivity(i);
                //loginRegistration.finish();
            }
            else{
                Toast.makeText(getContext(), "Sign up failed", Toast.LENGTH_LONG).show();
            }
            progressDialog.dismiss();
        }
    });
} // end of form

}

LoginRegistrationActivity.class

package com.fyp.selfzen.activities;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;

import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Toast;
import android.widget.VideoView;

import com.fyp.selfzen.R;
import com.fyp.selfzen.fragments.O_LoginRegistration.SignIn;

public class LoginRegisrationActivity extends AppCompatActivity {
    private String curent;
    VideoView vide;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_regisration);

        vide = findViewById(R.id.vide);
        String video_url = "android.resource://" + getPackageName() + "/" + R.raw.login_video;
        Uri videoUri = Uri.parse(video_url);
        vide.setVideoURI(videoUri);
        vide.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.setLooping(true);
                vide.requestFocus();
                vide.start();
            }
        });

        SignIn f1 = SignIn.newInstance(this);
        loadFrag(f1, getResources().getString(R.string.login));

    }


    public void loadFrag(Fragment f1, String name) {

        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
//        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);

        if(!name.equals(curent)){
            curent =name;
            ft.replace(R.id.frame_layout, f1, name);
        }

        ft.commitAllowingStateLoss();

    }

    @Override
    public void onBackPressed() {
        showAlertDialogButtonClicked();
    }

    public void showAlertDialogButtonClicked() {

        // setup the alert builder
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Exit");
        builder.setMessage("Are You Sure You Want Exit?");

        // add the buttons
        builder.setPositiveButton("Rate", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                launchMarket();
            }
        });
        builder.setNeutralButton("Yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                Intent homeIntent = new Intent(Intent.ACTION_MAIN);
                homeIntent.addCategory(Intent.CATEGORY_HOME);
                homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(homeIntent);
            }
        });
        builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });

        // create and show the alert dialog
        AlertDialog dialog = builder.create();
        dialog.show();
    }

    private void launchMarket() {
        Uri uri = Uri.parse("market://details?id=" + getPackageName());
        Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri);
        try {
            startActivity(myAppLinkToMarket);
        } catch (ActivityNotFoundException e) {
            Toast.makeText(this, " unable to find market app", Toast.LENGTH_LONG).show();
        }
    }

}

AndroidManifest.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.fyp.selfzen">

<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

<permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />

<application
    android:name="com.fyp.selfzen.MusicDNAApplication"
    android:allowBackup="true"
    android:hardwareAccelerated="true"
    android:icon="@drawable/logo"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:requestLegacyExternalStorage="true"
    android:theme="@style/MyMaterialTheme.Base"
    android:usesCleartextTraffic="true"
    tools:targetApi="m">
    <activity
        android:name="com.fyp.selfzen.activities.LoginRegisrationActivity"
        android:screenOrientation="portrait" />
    <activity
        android:name="com.fyp.selfzen.activities.HomeActivity"
        android:label="@string/title_activity_home"
        android:launchMode="singleTop"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
    </activity>

    <receiver android:name="com.fyp.selfzen.notificationmanager.AudioPlayerBroadcastReceiver">
        <intent-filter>
            <action android:name="com.kmit.musicapp.ACTION_PLAY_PAUSE" />
            <action android:name="com.kmit.musicapp.ACTION_NEXT" />
            <action android:name="com.kmit.musicapp.ACTION_PREV" />
        </intent-filter>
    </receiver>
    <!-- <provider -->
    <!-- android:name="androidx.core.content.FileProvider" -->
    <!-- android:authorities="com.kmit.musicapp.fileprovider" -->
    <!-- android:exported="false" -->
    <!-- android:grantUriPermissions="true"> -->
    <!-- <meta-data -->
    <!-- android:name="android.support.FILE_PROVIDER_PATHS" -->
    <!-- android:resource="@xml/filepaths" /> -->
    <!-- </provider> -->
    <activity
        android:name="com.fyp.selfzen.activities.SplashActivity"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.fyp.selfzen.activities.ThemeActivity"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan" />
    <activity
        android:name="com.fyp.selfzen.activities.LanguageActivity"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan" />
    <activity android:name=".baseactivity" />

    <service
        android:name="com.fyp.selfzen.notificationmanager.MediaPlayerService"
        android:stopWithTask="false" />

    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/logo" />
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/colorAccent" />
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id" />

    <service
        android:name="com.fyp.selfzen.activities.MyFirebaseMessagingService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>

    <meta-data
        android:name="com.google.android.gms.ads.AD_MANAGER_APP"
        android:value="true" />
</application>
0 Answers
Related