小编典典

获取当前片段对象

all

在我的main.xml我有

  <FrameLayout
        android:id="@+id/frameTitle"
        android:padding="5dp"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:background="@drawable/title_bg">
            <fragment
              android:name="com.fragment.TitleFragment"
              android:id="@+id/fragmentTag"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content" />

  </FrameLayout>

我正在设置这样的片段对象

FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new FragmentType1();
fragmentTransaction.replace(R.id.frameTitle, casinodetailFragment, "fragmentTag");

// fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

FragmentType2,FragmentType3,...在不同的时间设置不同类型的 Fragment 对象 (
)。现在在某个时间点,我需要确定当前存在哪个对象。

简而言之,我需要做这样的事情

Fragment currentFragment = //what is the way to get current fragment object in FrameLayout R.id.frameTitle

我尝试了以下

TitleFragment titleFragmentById = (TitleFragment) fragmentManager.findFragmentById(R.id.frameTitle);

    TitleFragment titleFragmentByTag = (TitleFragment) fragmentManager.findFragmentByTag("fragmentTag");

但是 这两个对象(titleFragmentById 和 titleFragmentByTag )都是null
我错过了什么吗?
我正在使用Compatibility Package, r3和开发API level 7.

findFragmentById()``findFragmentByTag()如果我们使用fragmentTransaction.replaceor设置了片段,并且将工作fragmentTransaction.add,但return null如果我们在 xml 中设置了对象(就像我在我的 中所做的那样main.xml)。我想我在我的 XML 文件中遗漏了一些东西。


阅读 41

收藏
2022-08-07

共1个答案

小编典典

现在在某个时间点,我需要确定当前存在哪个对象

调用findFragmentById()FragmentManager确定哪个片段在您的R.id.frameTitle容器中。

如果您在现代应用程序中使用“的androidx版本”,请使用/而不是Fragment``getSupportFragmentManager()``FragmentActivity``AppCompatActivity``getFragmentManager()

2022-08-07