FATAL EXCEPTION: main
Process: com.example, PID: 10078
java.lang.IllegalStateException: ViewTreeLifecycleOwner not found from androidx.compose.ui.platform.ComposeView{cad8567 V.E...... ......I. 0,0-0,0}
at androidx.compose.ui.internal.InlineClassHelperKt.throwIllegalStateExceptionForNullCheck(InlineClassHelper.kt:32)
at androidx.compose.ui.platform.WindowRecomposer_androidKt.createLifecycleAwareWindowRecomposer(WindowRecomposer.android.kt:455)
at androidx.compose.ui.platform.WindowRecomposer_androidKt.createLifecycleAwareWindowRecomposer$default(WindowRecomposer.android.kt:321)
at androidx.compose.ui.platform.WindowRecomposerFactory$Companion.LifecycleAware$lambda$0(WindowRecomposer.android.kt:165)
at androidx.compose.ui.platform.WindowRecomposerFactory$Companion.$r8$lambda$FWAPLXs0qWMqekhMr83xkKattCY(Unknown Source:0)
at androidx.compose.ui.platform.WindowRecomposerFactory$Companion$$ExternalSyntheticLambda0.createRecomposer(D8$$SyntheticClass:0)
at androidx.compose.ui.platform.WindowRecomposerPolicy.createAndInstallWindowRecomposer$ui_release(WindowRecomposer.android.kt:217)
at androidx.compose.ui.platform.WindowRecomposer_androidKt.getWindowRecomposer(WindowRecomposer.android.kt:297)
at androidx.compose.ui.platform.AbstractComposeView.resolveParentCompositionContext(ComposeView.android.kt:243)
at androidx.compose.ui.platform.AbstractComposeView.ensureCompositionCreated(ComposeView.android.kt:250)
at androidx.compose.ui.platform.AbstractComposeView.onAttachedToWindow(ComposeView.android.kt:280)
at android.view.View.dispatchAttachedToWindow(View.java:23105)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3520)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3618)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3077)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10644)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1570)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1579)
at android.view.Choreographer.doCallbacks(Choreographer.java:1179)
at android.view.Choreographer.doFrame(Choreographer.java:1108)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1553)
at android.os.Handler.handleCallback(Handler.java:995)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loopOnce(Looper.java:248)
at android.os.Looper.loop(Looper.java:338)
at android.app.ActivityThread.main(ActivityThread.java:9067)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
< /code>
Я искал решения на этом сайте и нашел этот вопрос. Я попробовал все решения в этом вопросе, но я получил ошибку: < /p>
Cannot access 'fun performRestore(savedState: Bundle?): Unit': it is internal in 'androidx/savedstate/SavedStateRegistry'.
< /code>
Вот мой текущий код: < /p>
package com.example
import android.view.View
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LifecycleRegistry
import androidx.lifecycle.ViewModelStore
import androidx.lifecycle.ViewModelStoreOwner
import androidx.savedstate.SavedStateRegistryController
import androidx.savedstate.SavedStateRegistryOwner
class OverlayLifecycle : LifecycleOwner, ViewModelStoreOwner, SavedStateRegistryOwner {
//Lifecylce Methods
override val lifecycle get() = lifecycleRegistry
override val viewModelStore get() = store
private var lifecycleRegistry: LifecycleRegistry = LifecycleRegistry(this)
private fun handleLifecycleEvent(event: Lifecycle.Event) =
lifecycleRegistry.handleLifecycleEvent(event)
override fun onCreate() {
super.onCreate()
savedStateRegistry.performRestore(null)
handleLifecycleEvent(Lifecycle.Event.ON_CREATE)
}
override fun onDestroy() {
super.onDestroy()
handleLifecycleEvent(Lifecycle.Event.ON_DESTROY)
}
//ViewModelStore Methods
private val store = ViewModelStore()
//SaveStateRegestry Methods
override val savedStateRegistry get() = SavedStateRegistryController.create(this).savedStateRegistry
}
< /code>
Также я не знаю, как правильно реализовать это внутри случайной функции в приложении.
Например: < /p>
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// set the layout parameters of the window
val params = WindowManager.LayoutParams( // Shrink the window to wrap the content rather
// than filling the screen
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT, // Display it on top of other application windows
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, // Don't let it grab the input focus
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, // Make the underlying application window visible
// through any transparent parts
PixelFormat.TRANSLUCENT
)
val view = ComposeView {
Text("gherdiguvofwfehgoesg")
}
// Define the position of the
// window within the screen
params.gravity = Gravity.CENTER
val windowManager = context.getSystemService(WINDOW_SERVICE) as WindowManager
runOrLog("Applocker") {
// check if the view is already
// inflated or present in the window
if (view.windowToken == null && view.parent == null) {
windowManager.addView(view, params);
}
}
}
Мне нужна помощь в реализации класса владельца жизненного цикла.
Я делаю наложение записи пароля в моем приложении Android, когда кто -то пытается открыть выбранное приложение, но я получил эту ошибку: < /p> [code]FATAL EXCEPTION: main Process: com.example, PID: 10078 java.lang.IllegalStateException: ViewTreeLifecycleOwner not found from androidx.compose.ui.platform.ComposeView{cad8567 V.E...... ......I. 0,0-0,0} at androidx.compose.ui.internal.InlineClassHelperKt.throwIllegalStateExceptionForNullCheck(InlineClassHelper.kt:32) at androidx.compose.ui.platform.WindowRecomposer_androidKt.createLifecycleAwareWindowRecomposer(WindowRecomposer.android.kt:455) at androidx.compose.ui.platform.WindowRecomposer_androidKt.createLifecycleAwareWindowRecomposer$default(WindowRecomposer.android.kt:321) at androidx.compose.ui.platform.WindowRecomposerFactory$Companion.LifecycleAware$lambda$0(WindowRecomposer.android.kt:165) at androidx.compose.ui.platform.WindowRecomposerFactory$Companion.$r8$lambda$FWAPLXs0qWMqekhMr83xkKattCY(Unknown Source:0) at androidx.compose.ui.platform.WindowRecomposerFactory$Companion$$ExternalSyntheticLambda0.createRecomposer(D8$$SyntheticClass:0) at androidx.compose.ui.platform.WindowRecomposerPolicy.createAndInstallWindowRecomposer$ui_release(WindowRecomposer.android.kt:217) at androidx.compose.ui.platform.WindowRecomposer_androidKt.getWindowRecomposer(WindowRecomposer.android.kt:297) at androidx.compose.ui.platform.AbstractComposeView.resolveParentCompositionContext(ComposeView.android.kt:243) at androidx.compose.ui.platform.AbstractComposeView.ensureCompositionCreated(ComposeView.android.kt:250) at androidx.compose.ui.platform.AbstractComposeView.onAttachedToWindow(ComposeView.android.kt:280) at android.view.View.dispatchAttachedToWindow(View.java:23105) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3520) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3618) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3077) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10644) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1570) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1579) at android.view.Choreographer.doCallbacks(Choreographer.java:1179) at android.view.Choreographer.doFrame(Choreographer.java:1108) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1553) at android.os.Handler.handleCallback(Handler.java:995) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loopOnce(Looper.java:248) at android.os.Looper.loop(Looper.java:338) at android.app.ActivityThread.main(ActivityThread.java:9067) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
< /code> Я искал решения на этом сайте и нашел этот вопрос. Я попробовал все решения в этом вопросе, но я получил ошибку: < /p> Cannot access 'fun performRestore(savedState: Bundle?): Unit': it is internal in 'androidx/savedstate/SavedStateRegistry'. < /code> Вот мой текущий код: < /p> package com.example
class OverlayLifecycle : LifecycleOwner, ViewModelStoreOwner, SavedStateRegistryOwner { //Lifecylce Methods
override val lifecycle get() = lifecycleRegistry override val viewModelStore get() = store
private var lifecycleRegistry: LifecycleRegistry = LifecycleRegistry(this)
private fun handleLifecycleEvent(event: Lifecycle.Event) = lifecycleRegistry.handleLifecycleEvent(event)
override fun onCreate() { super.onCreate() savedStateRegistry.performRestore(null) handleLifecycleEvent(Lifecycle.Event.ON_CREATE) }
override fun onDestroy() { super.onDestroy() handleLifecycleEvent(Lifecycle.Event.ON_DESTROY) }
//ViewModelStore Methods private val store = ViewModelStore()
//SaveStateRegestry Methods
override val savedStateRegistry get() = SavedStateRegistryController.create(this).savedStateRegistry } < /code> Также я не знаю, как правильно реализовать это внутри случайной функции в приложении. Например: < /p> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // set the layout parameters of the window val params = WindowManager.LayoutParams( // Shrink the window to wrap the content rather // than filling the screen WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, // Display it on top of other application windows WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, // Don't let it grab the input focus WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, // Make the underlying application window visible // through any transparent parts PixelFormat.TRANSLUCENT )
val view = ComposeView { Text("gherdiguvofwfehgoesg") }
// Define the position of the // window within the screen params.gravity = Gravity.CENTER val windowManager = context.getSystemService(WINDOW_SERVICE) as WindowManager runOrLog("Applocker") { // check if the view is already // inflated or present in the window if (view.windowToken == null && view.parent == null) { windowManager.addView(view, params); } } } [/code] Мне нужна помощь в реализации класса владельца жизненного цикла.