【发布时间】:2021-10-18 00:04:05
【问题描述】:
在我的片段中使用 Compose 时出现IllegalStateException 错误。
java.lang.IllegalStateException: ViewTreeLifecycleOwner not found from androidx.constraintlayout.widget.ConstraintLayout
活动是 AppCompatActivity:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
我正在使用Navigation Component 在片段之间导航。这是活动 XML:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/appContent"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/main_navigation_graph" />
</androidx.constraintlayout.widget.ConstraintLayout>
和片段:
class WelcomeFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return ComposeView(requireContext()).apply {
setViewCompositionStrategy(
DisposeOnLifecycleDestroyed(viewLifecycleOwner)
)
setContent {
MaterialTheme {
Text(text = "Welcome to App")
}
}
}
}
}
依赖和版本:
FragmentVersion = '1.3.3'
CONSTRAINT_LAYOUT_VERSION = '2.1.0'
KOTLIN_VERSION = '1.5.21'
ACTIVITY_KTX_VERSION = '1.3.1'
COMPOSE_VERSION = '1.0.0'
COMPOSE_ACTIVITY = '1.3.1'
COMPOSE_VIEWMODEL = '1.0.0-alpha07'
COMPOSE_CONSTRAINT_VERSION = '1.0.0-beta02'
APP_COMPAT_VERSION = '1.3.1'
【问题讨论】:
标签: android android-fragments android-constraintlayout androidx android-jetpack-compose