无法实例化以下类:
androidx.fragment.app.FragmentContainerView
(开放类,显示异常,清除缓存)提示:在IDE中显示时,在自定义视图中使用
View.isInEditMode()
可以跳过代码或显示示例数据。如果这是意外错误,您也可以尝试构建项目,然后手动刷新布局。异常详细信息:
java.lang.UnsupportedOperationException: FragmentContainerView must be within a FragmentActivity to be instantiated from XML. at androidx.fragment.app.FragmentContainerView.<init>(FragmentContainerView.java:117) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1123) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1097) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084) at android.view.LayoutInflater.inflate(LayoutInflater.java:682) at android.view.LayoutInflater.inflate(LayoutInflater.java:501)
此消息已显示,而基本活动中未显示布局预览,或者其他模板接受了空活动。
在此消息之前,显示了一条有关用fragmentcontainerview
替换片段标签的消息。我解决了这个问题,然后显示了以上消息。我尝试了一些已知的解决方案,例如重建,刷新布局以及使缓存/重启无效等,但是它们并没有解决问题。
答案 0 :(得分:2)
今天遇到相同的问题。检查一下:https://developer.android.com/jetpack/androidx/releases/fragment#1.3.0-alpha01。
他们已经注意到此问题,并发布了可解决此错误的更新版本。
我尝试使用此版本的Fragment库,结果再也没有错误,但是片段仍未显示在布局预览中。不知道这是我的错误还是他们还在努力。
更新:
要使用库或指定库的特定版本:
打开文件 build.gradle(模块:应用),在依赖项部分中添加以下行:
implementation '[library_name]:[version]'
例如,如果要使用片段库的1.3.0-alpha01版本,请添加以下行:
implementation 'androidx.fragment:fragment:1.3.0-alpha01'
如果要查找每个库的名称,请检查以下内容:https://developer.android.com/jetpack/androidx/migrate/artifact-mappings
要了解库的当前版本和最新更新:https://developer.android.com/jetpack/androidx/versions/
答案 1 :(得分:1)
如果您查看FragmentContainerView
的源代码,则会看到以下内容:
/**
* Do not call this constructor directly. Doing so will result in an
* {@link UnsupportedOperationException}.
*/
public FragmentContainerView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
throw new UnsupportedOperationException("FragmentContainerView must be within a "
+ "FragmentActivity to be instantiated from XML.");
}
不幸的是,这是布局预览调用的构造函数。在Android Studio团队修复此问题之前,似乎无法对此错误采取任何措施。
这是系统“应该”使用的构造函数:
FragmentContainerView(Context context, AttributeSet attrs, FragmentManager fm) {
// ...
}
如果您实际运行您的应用程序,则应调用它,并且一切正常。