То, что я пытаюсь сделать здесь, - это когда я запускаю свой MainActivity
с FirebaseAuthListener
, и ни один пользователь не вошел в систему, он перейдет к главному фрагменту, а MainFragment
для контейнера, который подключается к моему * 1004. * (это SignInFragment
расширенный фрагмент). В общем, MainFragment
расширен до AppCompatActivity
.
На самом деле все работает, но моя проблема в том, что MainFragemnt
пусто в моем эмуляторе, должно отображаться LoginFragment
.
Вот мои коды: MainActivity
класс
//Firebase
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
private TextView mWelcome;
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWelcome = findViewById(R.id.tvWelcome);
setupFirebaseAuth();
}
/*
--------------------------------------Firebase-----------------------------------------
*/
private void getCurrentUser(FirebaseUser user){
Log.d(TAG, "getCurrentUser: checking if user is logged in.");
if (user == null){
Intent intent = new Intent(this, MainFragment.class);
startActivity(intent);
}
}
private void setupFirebaseAuth(){
Log.d(TAG, "setupFirebaseAuth: setting up firebase auth.");
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
//Check if the user is logged in
FirebaseUser user = firebaseAuth.getCurrentUser();
getCurrentUser(user);
if (user != null){
//User is signed in
Log.d(TAG, "onAuthStateChanged: signed _in: " + user.getUid());
} else {
//User is signed out
Log.d(TAG, "onAuthStateChanged: signed_out");
}
}
};
}
@Override
protected void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
protected void onStop() {
super.onStop();
if (mAuthListener != null){
mAuth.removeAuthStateListener(mAuthListener);
}
}
Мои коды для MainFragment
:
public class MainFragment extends AppCompatActivity {
@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
setContentView(R.layout.fragment_main);
SignInFragment fragment = new SignInFragment();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container, fragment, null).commit();
Мой код для SignInFragment
:
public class SignInFragment extends Fragment {
private static final String TAG = "SignInFragment";
private TextView mEmail, mPassword, mForRegister;
private EditText eEmail, ePassword;
private Button btnLogin;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.signin_fragment,container,false);
//TextView
mEmail = view.findViewById(R.id.tvEmail);
mPassword = view.findViewById(R.id.tvPassword);
mForRegister = view.findViewById(R.id.tvForRegister);
//EditText
eEmail = view.findViewById(R.id.etEmail);
ePassword = view.findViewById(R.id.etPassword);
//Button
btnLogin = view.findViewById(R.id.btnLogin);
//Navigating to RegisterFragment
mForRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction fr = getFragmentManager().beginTransaction();
fr.replace(R.id.container, new RegisterFragment());
fr.commit();
}
});
return view;
}
Это изображение эмулятора:
Спасибо!