java - isInvalidFragment 在目录重组后传递了错误的 fragmentName
问题描述
将片段放入具有isValidFragment
功能的子目录后出现问题。
所有活动和片段以前都在:
- 应用程序/src/main/java/com/myproject/settings/
它们现在位于此处:
- 应用程序/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
我已经清理了项目并手动删除了构建文件夹并没有运气重建。任何指导表示赞赏。
解决方案
如果只是为了我未来的自己..
使用 Android Studio,这些都不起作用:
- 重建
- 文件->使缓存无效
- 删除 .idea/ 文件夹并使用 gradle 重新同步项目
需要做的是使用 gradle 菜单(或命令行)使用 app->Tasks->build->build。这揭示了在 .xml 文件中重命名的许多问题,这些文件没有使用正确的路径 ( com.myproject.settings.fragments.<fragmentName>
) 进行更新。
推荐阅读
- python - 将数据传递给 tkinter dnd (dragndrop) vs 事件绑定问题
- reactjs - React - 提交表单时如何使api请求等待未定义变量的值
- flutter - Dartdoc -> 排除方法体
- html - 想知道是否有办法找到与渲染相关的代码
- javascript - 如何从 javascript 中捕获 Calendly iframe 重新安排事件
- c# - 如何在 Unity3D 中更改具有多个材质的对象上的单个材质?
- typescript - 赛普拉斯:无法与页面元素交互
- python - 为什么 MIN() 和 MAX() 等原生 CQL 函数在 Amazon Keyspaces 中不起作用?
- google-chrome-extension - 如何从 React 应用程序向我的 chrome 扩展程序发送消息?
- php - 如何删除警告:尝试读取属性“post_name”