【问题标题】:Is there better way to navigate in Android based on source fragment?有没有更好的基于源代码片段在 Android 中导航的方法?
【发布时间】:2021-06-15 08:39:11
【问题描述】:

我有片段S1S2PD1D2.

S1S2都有导致P的动作。当我在片段 P 中时,我可以导航到 D1D2
当我从 S1 来时,我想导航到 D1,但是当我从 S2 来时,我想去 D2 em>。

根据源片段进行导航的最佳方式是什么?

我知道我可以为此使用参数,但这似乎是一个更基本的操作。我希望有一些更清晰、更快捷的解决方案(例如一些方法getNameOfSource())。

【问题讨论】:

  • 你可以在你的 backstack 中找到前一个片段,并据此判断下一步要去哪里。虽然使用参数比我认为的要方便得多,但这超出了问题的重点。

标签: android android-fragments android-navigation


【解决方案1】:

您可以通过从 Fragment Backstack 获取条目来做到这一点,尽管您首先需要确保向他们提供某种 TAG。你可以简单地使用这样的东西。我会说使用参数仍然更好,但这超出了这个问题的范围

private fun getNameOfSource(): String? {
        val fm = supportFragmentManager
        val count = fm.backStackEntryCount
        return fm.getBackStackEntryAt(count - 2).name
    }

【讨论】:

    【解决方案2】:

    您可以使用以下代码获取片段标签:

    public Fragment getSourceFragmentName() {
        // you need to check this because you need at least 2 fragments at the backstack
        if (getSupportFragmentManager().getBackStackEntryCount() < 2) {
            return null;
        }
        
        String fragmentTag = getSupportFragmentManager().getBackStackEntryAt(getSupportFragmentManager().getBackStackEntryCount() - 2).getName();
        
        return getSupportFragmentManager().findFragmentByTag(fragmentTag);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多