未显示Android Studio预览

jdg4fx2g  于 2022-11-20  发布在  Android
关注(0)|答案(2)|浏览(232)

无法示例化以下类:androidx.fragment.app.FragmentContainerView(开启类别、显示例外、清除快取)
提示:在自定义视图中使用View.isInEditMode()可以跳过代码或在IDE中显示示例数据.如果这是意外错误,您还可以尝试生成项目,然后手动刷新布局.
例外详细信息:

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替换片段标记的消息。我修复了此问题,然后显示了上述消息。我尝试了已知的解决方案,如重建、刷新布局和使缓存无效/重新启动等,但它们没有成功。

nvbavucw

nvbavucw1#

如果查看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) {
    // ...
}

如果你真的运行你的应用程序,这应该被调用,一切都应该正常工作。

axkjgtzd

axkjgtzd2#

今天遇到了同样的问题。看看这个:https://developer.android.com/jetpack/androidx/releases/fragment#1.3.0-alpha01。
他们已经注意到了这个问题,并发布了一个更新的版本来修复这个错误。
我试着使用这个版本的片段库,结果发现没有错误,但是片段仍然没有显示在布局预览中。不确定这是我的错误还是他们还在处理它。

更新

要使用库或指定库的特定版本,请执行以下操作:
打开文件build.gradle(模块:app),请在dependency区段中加入下列行:

implementation '[library_name]:[version]'

例如,如果要使用片段库的版本1.3.0-alpha 01,请添加以下行:

implementation 'androidx.fragment:fragment:1.3.0-alpha01'

如果您想查找每个库的名称,请查看以下内容:https://developer.android.com/jetpack/androidx/migrate/artifact-mappings
要了解库的当前版本和最新更新,请执行以下操作:https://developer.android.com/jetpack/androidx/versions/

相关问题