如果我想动态删除它,请使用哪种数据类型的片段

时间:2017-09-24 21:12:32

标签: android android-fragments fragment

我正在尝试获取动态当前显示或显示片段的实例,如下所示:

fragment = getSupportFragmentManager().findFragmentById(R.id.fragmentContainer);

但此代码返回以下类型android.support.v4.app.Fragment 后来我想删除我之前获得如下实例的那个片段:

mFragmentTransaction.remove(fragment);

但此方法不接受此类型android.support.v4.app.Fragment

请如何解决这个问题。

3 个答案:

答案 0 :(得分:1)

应使用mFragmentTransaction方法初始化变量getSupportFragmentManager().beginTransaction()。也许你已经使用了getFragmentManager()对象,在你的情况下,女巫会不正确。

答案 1 :(得分:1)

检查您的进口商品。如果您看到以下导入:

import android.app.Fragment;

您需要将其更改为支持库版本以保持一致性,如下所示:

import android.support.v4.app.Fragment;

答案 2 :(得分:0)

检查您的导入声明,并确保您没有混合"支持"片段和" Native"片段。您必须使用一致的片段,许多人建议使用"支持"版本超过" Native"版本,在这种情况下,您应该使用getSupportFragmentManager

此外,由于您希望删除片段,请确保片段容器未在XML中进行硬编码。如果您打算替换或删除片段,那么初始片段应该由您的代码动态加载(您通常会使用id作为R.id.{frameLayoutId}加载到FrameLayout中),否则它将无效。