首页 > 解决方案 > isInvalidFragment 在目录重组后传递了错误的 fragmentName

问题描述

将片段放入具有isValidFragment功能的子目录后出现问题。

所有活动和片段以前都在:

它们现在位于此处:

移动并放置import com.myproject.settings.fragments.*;在仍位于 settings/ 下的 SettingsActivity.java 后,isValidFragment 仍在接收com.myproject.settings.GeneralSettingsFragment.. 而我的调用GeneralSettingsFragment.class.getName()返回正确的com.myproject.settings.fragments.GeneralSettingsFragment.

isValidFragment下文:

    @Override
    protected boolean isValidFragment(String fragmentName) {
        return PreferenceFragment.class.getName().equals(fragmentName)
                || GeneralSettingsFragment.class.getName().equals(fragmentName);
    }

我收到的错误:

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myproject.settings/com.myproject.settings.SettingsActivity}: java.lang.IllegalArgumentException: Invalid fragment for this activity: com.myproject.settings.GeneralSettingsFragment

我已经清理了项目并手动删除了构建文件夹并没有运气重建。任何指导表示赞赏。

标签: javaandroidandroid-fragments

解决方案


如果只是为了我未来的自己..

使用 Android Studio,这些都不起作用:

  • 重建
  • 文件->使缓存无效
  • 删除 .idea/ 文件夹并使用 gradle 重新同步项目

需要做的是使用 gradle 菜单(或命令行)使用 app->Tasks->build->build。这揭示了在 .xml 文件中重命名的许多问题,这些文件没有使用正确的路径 ( com.myproject.settings.fragments.<fragmentName>) 进行更新。


推荐阅读