【问题标题】:isInvalidFragment passes wrong fragmentName after directory restructureisInvalidFragment 在目录重组后传递了错误的 fragmentName
【发布时间】:2020-09-16 22:03:37
【问题描述】:

将片段放入具有isValidFragment 函数的子目录后,我遇到了问题。

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

  • app/src/main/java/com/myproject/settings/

它们现在位于此处:

  • app/src/main/java/com/myproject/settings/fragments/

在移动并将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

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

【问题讨论】:

    标签: java android android-fragments


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-11-19
      • 1970-01-01
      • 2020-08-01
      • 2014-08-03
      • 2018-04-27
      • 2022-11-14
      • 2018-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多