gpt4 book ai didi

android - 在带有深度链接的导航图中打开 Activity 导致崩溃

转载 作者:行者123 更新时间:2023-12-05 06:07:06 25 4
gpt4 key购买 nike

我在导航图中有一个 Activity ,我可以直接通过下面的代码导航到它

Navigation.findNavController(requireView())?.navigate(R.id.sampleActivity)

请在下面找到导航图

<navigation 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:id="@+id/home_nav_graph"
app:startDestination="@id/appFirstFragment">

<fragment
android:id="@+id/appFirstFragment"
android:name="com.example.deeplinkpoc.AppFirstFragment"
android:label="fragment_app_first"
tools:layout="@layout/fragment_app_first" >
</fragment>
<activity
android:id="@+id/sampleActivity"
android:name="com.example.deeplinkpoc.SampleActivity"
android:label="activity_sample"
tools:layout="@layout/activity_sample">
<deepLink
android:id="@+id/deepLink2"
app:uri="https://www.abcdxyz.com/test" />
</activity>
</navigation>

但如果我尝试使用深度链接导航到它,它就会崩溃

Process: com.example.deeplinkpoc, PID: 12805
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.deeplinkpoc/com.example.deeplinkpoc.HomeActivity}: android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class androidx.fragment.app.FragmentContainerView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2914)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3049)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1809)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class androidx.fragment.app.FragmentContainerView
Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class androidx.fragment.app.FragmentContainerView
Caused by: android.content.res.Resources$NotFoundException: Unable to find resource ID #0x0
at android.content.res.ResourcesImpl.getResourceTypeName(ResourcesImpl.java:271)
at android.content.res.Resources.getResourceTypeName(Resources.java:1986)
at androidx.navigation.ActivityNavigator.navigate(ActivityNavigator.java:200)
at androidx.navigation.ActivityNavigator.navigate(ActivityNavigator.java:44)
at androidx.navigation.NavController.navigate(NavController.java:1057)
at androidx.navigation.NavController.handleDeepLink(NavController.java:732)
at androidx.navigation.NavController.onGraphCreated(NavController.java:633)
at androidx.navigation.NavController.setGraph(NavController.java:590)
at androidx.navigation.NavController.setGraph(NavController.java:555)
at androidx.navigation.NavController.setGraph(NavController.java:537)
at androidx.navigation.fragment.NavHostFragment.onCreate(NavHostFragment.java:248)
at androidx.fragment.app.Fragment.performCreate(Fragment.java:2684)
at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:280)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1175)
at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)

更新请找到 navhost Activity xml

<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=".HomeActivity">
<androidx.fragment.app.FragmentContainerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/my_nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
app:navGraph="@navigation/home_nav_graph"
/></androidx.constraintlayout.widget.ConstraintLayout>

如何使用深度链接在导航图中打开 Activity ?

最佳答案

根据 this issue ,这是 Navigation 2.3.2 的一个已知问题,已标记为已在即将发布的 Navigation 2.3.3 版本中修复。

但是:

note that it is never the right approach to attach a <deeplink> to an <activity> destination as that will never give you the right behavior when using an implicit deep link on another app's task (where the system back should immediately take the user back to the app that triggered your deep link). Instead, you should attach your deep link directly to your second activity (either by manually writing the appropriate <intent-filter> or by adding the <deeplink> to the start destination of a nav host in that second activity).

所以真的,你应该移动你的 <deeplink>离开您的 Activity 目的地,这将修复您的崩溃(在每个版本的导航上)并实际为您提供正确的行为。您需要做的任何验证都需要在实际的正确 Activity 上完成。

关于android - 在带有深度链接的导航图中打开 Activity 导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65590307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com