我有一个带有以下代码的简单 fragment :
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
Fragment selectedFragment= null;
switch (menuItem.getItemId()){
case R.id.nav_home:
selectedFragment= new HomeFragment();
setTitle("Beranda");
break;
case R.id.nav_message:
selectedFragment= new MessageFragment();
setTitle("Pesan");
break;
case R.id.nav_transaction:
selectedFragment= new TransactionFragment();
setTitle("Transaksi");
break;
case R.id.nav_profile:
selectedFragment= new ProfileFragment();
setTitle("Profil");
if(sessionLevel.equals("admin")){
setTitle("Admin");
}
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, selectedFragment).commit();
return true;
}
};
大多数 fragment 只是 Intent Activity 的某种持有者。而且 Activity 本身没有一些花哨的代码。
问题是,当我在“个人资料”菜单上执行 Intent,然后按返回时,显示的 fragment 是 HomeActivity
,但所选按钮是 个人资料
。
我不知道其他 2 个 fragment ,因为我还不在那里,但可能他们做了同样的事情。
最佳答案
您可以按以下方式执行此操作:
@Override
public void onBackPressed() {
super.onBackPressed();
Fragment frag = YourActivity.this.getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if(frag!=null && frag instanceof yourFragment)
{}
}
以下内容将为您提供计数
int count = getSupportFragmentManager().getBackStackEntryCount();
您可以设置条件,如果计数大于 1,则有超过 1 个 fragment ,否则您至少有 1 个 fragment ,这将是最后一个 fragment 。如果计数为 0,则堆栈上不再有可用的 fragment ,因为所有 fragment 均已弹出堆栈。
关于java - 按下后退按钮时如何获取最后使用的 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57336305/