java.lang.IllegalStateException:未从 androidx.constraintlayout.widget.ConstraintLayout 找到 ViewTreeLifecycleOwner

Ren*_*ele 13 android android-overlay android-jetpack-compose

当我尝试使用 XML 在覆盖层中插入 Compose(在其他应用程序上绘制)时,出现以下异常:

java.lang.IllegalStateException: ViewTreeLifecycleOwner not found from androidx.constraintlayout.widget.ConstraintLayout{d596746 V.E...... ......ID 0,0-0,0}
Run Code Online (Sandbox Code Playgroud)

但如果没有覆盖(在活动中),它可以正常工作。有谁知道如何解决吗?我已经将 AppCompat 库更新到 1.3.0

我的 XML 代码:

java.lang.IllegalStateException: ViewTreeLifecycleOwner not found from androidx.constraintlayout.widget.ConstraintLayout{d596746 V.E...... ......ID 0,0-0,0}
Run Code Online (Sandbox Code Playgroud)

我的叠加代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/black">
    <androidx.compose.ui.platform.ComposeView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/compose_view"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

Mah*_*zad 8

对我来说,这是因为我没有包含appcompat库,并且我的活动继承自Activity而不是AppCompatActivity。通过添加库解决了问题:

implementation("androidx.appcompat:appcompat:1.3.1")
Run Code Online (Sandbox Code Playgroud)

并继承自AppCompatActivity

class MyActivity: AppCompatActivity() {
  ...
}
Run Code Online (Sandbox Code Playgroud)


小智 6

对我来说,androidx.appcompat:appcompat从升级1.0.01.4.1,问题就解决了。

片段:

class Xxx : Fragment() {

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {

    val view = inflater.inflate(R.layout.fragment_xxx, container, false)

    view.findViewById<ComposeView>(R.id.compose_view).apply {
        setViewCompositionStrategy(
            ViewCompositionStrategy.DisposeOnLifecycleDestroyed(viewLifecycleOwner)
        )
        setContent {
            // compose
        }
    }
    return view
}
Run Code Online (Sandbox Code Playgroud)

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:orientation="vertical">

    <androidx.compose.ui.platform.ComposeView
        android:id="@+id/compose_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)


tra*_*mer 1

    \n
  1. 确保您的约束布局已更新到应用程序级别build.gradle文件中的最新版本。
  2. \n
\n
\n
dependencies { ...    \n implementation \'androidx.constraintlayout:constraintlayout:1.3.x\'\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 可以肯定的是,搜索并替换所有xml 标签名称
  2. \n
\n
\n
<androidx.constraintlayout.ConstraintLayout>\n\n //with ->\n\n<androidx.constraintlayout.widget.ConstraintLayout>\n\n \n
Run Code Online (Sandbox Code Playgroud)\n

在每个地方CTRL+ SHIFT+ R\n_

\n
    \n
  1. 并在里面gradle.properties 添加这些:
  2. \n
\n
\n
 android.enableJetifier=true\n android.useAndroidX=true\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 清除/使缓存无效并重新启动 Android Studio。
  2. \n
\n
\n
\n

文件\xe2\x86\x92使缓存无效/重新启动\xe2\x86\x92使缓存无效并重新启动

\n
\n


归档时间:

查看次数:

9018 次

最近记录:

1 年,9 月 前