java - 按下后退按钮时如何获取最后使用的 Fragment

标签 java android android-fragments

我有一个带有以下代码的简单 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/

相关文章:

java - IdentityHashMap 的用例

android - Google Play 结算安全建议是否仅用于防止盗版?

android - 如何在 LazyColumn Jetpack Compose 中的项目之间添加分隔符?

java - onClickListener 无法在 Fragment 中工作

android - 当我按下onClick Android时按钮会缩小

java - 使用 Jaxb 从 xsd 生成 java 数组而不是 Collection 类型

java - 在 ActionBarActivity 中创建 AlertDialog

Java GSSAPI : Compare two GSSCredential Instances

android - 通过 GoogleApiAvailability.showErrorDialogFragment 呈现独立于 Activity 的样式对话框

android - 禁用 PreferenceScreen 的滚动