У меня есть такое же созвездие в приложении, которое я сейчас разрабатываю.
Прежде всего, вам нужен запуск Activity, расширяющий FragmantActivity или AppCompatActivity.Давайте назовем эту деятельность MainActivity.Просто создайте еще один фрагмент для входа / регистрации со своим макетом.А в MainActivity, который является активностью запуска, вы можете обрабатывать в onResume()
-Методе, отображать ли фрагмент логина или нет.
Пример
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
if (!userManager.isLoggedIn()) {
LoginFragment loginFragment = LoginFragment.newInstance();
//LoginFragment loginFragment = new LoginFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_layout, loginFragment,
LoginFragment.class.getSimpleName()
).commit();
}
}
userManager - это объект класса обслуживания для аутентификации.У него есть метод, возвращающий логическое указание, вошел ли пользователь в систему или нет.Если пользователь вошел в систему, текущий фрагмент заменяется фрагментом входа в систему.Вот и все.
С фрагментами вы можете условно отображать различные макеты со своей собственной логикой.
Объяснение создания фрагмента:
Если вы добавляете фрагмент в свой проект, AndroidStudio создает шаблонный код с помощью статического метода фабрики newInstance (), поскольку конструктор не должен быть перегружен.Если вам не нужно передавать аргументы для создания фрагмента входа в систему, вы можете сделать это с помощью нового LoginFragment ().Но если вам нужны аргументы, вы должны использовать фабричный метод newInstance, который создает экземпляр фрагмента без каких-либо аргументов.Вот хорошее объяснение этому: https://stackoverflow.com/a/9245510/474985