Android 动态更改处于已登录状态的片段,并保存';t登录
我有一个应用程序,允许用户不用登录就可以使用这些应用程序(当然也需要登录) 当用户尚未登录时,我希望我的应用程序显示一个请求用户登录的片段(LoginFragment)。 当用户已经登录时,我希望我的应用程序显示主片段(HomeFragment) 我使用firebase auth作为我的登录“功能”。 这是我的主要活动代码Android 动态更改处于已登录状态的片段,并保存';t登录,android,android-fragments,Android,Android Fragments,我有一个应用程序,允许用户不用登录就可以使用这些应用程序(当然也需要登录) 当用户尚未登录时,我希望我的应用程序显示一个请求用户登录的片段(LoginFragment)。 当用户已经登录时,我希望我的应用程序显示主片段(HomeFragment) 我使用firebase auth作为我的登录“功能”。 这是我的主要活动代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(saved
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMainFrame = findViewById(R.id.main_frame);
mMainNav = findViewById(R.id.main_nav);
homeFragment = new HomeFragment();
measureFragment = new MeasureFragment();
accountFragment = new AccountFragment();
loginFragment = new LoginFragment();
setFragment(measureFragment);
mMainNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.nav_measure:
setFragment(measureFragment);
return true;
case R.id.nav_home:
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
Toast.makeText(MainActivity.this, "1", Toast.LENGTH_SHORT).show();
user = firebaseAuth.getCurrentUser();
if (user != null) {
Toast.makeText(MainActivity.this, "2", Toast.LENGTH_SHORT).show();
setFragment(homeFragment);
} else {
Toast.makeText(MainActivity.this, "3", Toast.LENGTH_SHORT).show();
setFragment(loginFragment);
}
}
};
return true;
case R.id.nav_account:
setFragment(accountFragment);
return true;
default:
return false;
}
}
});
}
private void setFragment(Fragment fragment) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_frame , fragment);
fragmentTransaction.commit();
}
这是我的模型
检查方法的类型。我已经使用了这种方法,但我的代码不起作用。我需要一个代码解决方案什么不起作用?根据我在代码中看到的情况,您正在替换上一个片段,这样,您的反按将不会使您返回到上一个屏幕/片段。