当使用以下代码从一个片段导航到另一个片段时,我通常没有问题:
val login = AuthenticationFragmentDirections.actionToLogin()
Navigation.findNavController(fragmentView).navigate(login)
该应用程序以前工作正常,但不知何故它不再工作,并出现错误:
androidx。碎片应用程序。片段$InstantiationException:无法实例化片段com。muchammadagunglaksana。公里。碎片。身份验证。LoginUsingEmailFragment:调用片段构造函数导致异常
androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment com.muchammadagunglaksana.kumpul_muslim.Fragments.Authentication.LoginUsingEmailFragment: calling Fragment constructor caused an exception
at androidx.fragment.app.Fragment.instantiate(Fragment.java:503)
at androidx.navigation.fragment.FragmentNavigator.instantiateFragment(FragmentNavigator.java:184)
at androidx.navigation.fragment.FragmentNavigator.navigate(FragmentNavigator.java:212)
at androidx.navigation.fragment.FragmentNavigator.navigate(FragmentNavigator.java:58)
at androidx.navigation.NavController.navigate(NavController.java:822)
at androidx.navigation.NavController.navigate(NavController.java:807)
at androidx.navigation.NavController.navigate(NavController.java:744)
at androidx.navigation.NavController.navigate(NavController.java:730)
at androidx.navigation.NavController.navigate(NavController.java:862)
at com.muchammadagunglaksana.kumpul_muslim.Fragments.Authentication.AuthenticationFragment$setUpListeners$1.onClick(AuthenticationFragment.kt:55)
at android.view.View.performClick(View.java:5246)
at android.widget.TextView.performClick(TextView.java:10565)
at android.view.View$PerformClick.run(View.java:21200)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6946)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at androidx.fragment.app.Fragment.instantiate(Fragment.java:485)
at androidx.navigation.fragment.FragmentNavigator.instantiateFragment(FragmentNavigator.java:184)
at androidx.navigation.fragment.FragmentNavigator.navigate(FragmentNavigator.java:212)
at androidx.navigation.fragment.FragmentNavigator.navigate(FragmentNavigator.java:58)
at androidx.navigation.NavController.navigate(NavController.java:822)
at androidx.navigation.NavController.navigate(NavController.java:807)
at androidx.navigation.NavController.navigate(NavController.java:744)
at androidx.navigation.NavController.navigate(NavController.java:730)
at androidx.navigation.NavController.navigate(NavController.java:862)
at com.muchammadagunglaksana.kumpul_muslim.Fragments.Authentication.AuthenticationFragment$setUpListeners$1.onClick(AuthenticationFragment.kt:55)
at android.view.View.performClick(View.java:5246)
at android.widget.TextView.performClick(TextView.java:10565)
at android.view.View$PerformClick.run(View.java:21200)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6946)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Caused by: kotlin.UninitializedPropertyAccessException: lateinit property mContext has not been initialized
at com.muchammadagunglaksana.kumpul_muslim.Fragments.Authentication.LoginUsingEmailFragment.<init>(LoginUsingEmailFragment.kt:47)
通过身份验证,我希望用户可以选择登录或使用代码注册目的地
toLoginButton.setOnClickListener {
val login = AuthenticationFragmentDirections.actionToLogin()
Navigation.findNavController(fragmentView).navigate(login)
}
toRegisterButton.setOnClickListener {
val register = AuthenticationFragmentDirections.actionToRegister()
Navigation.findNavController(fragmentView).navigate(register)
}
但我不知道我为什么会犯这样的错误:
这是我的导航图的xml:
<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/main_graph"
app:startDestination="@id/destination_home">
<fragment android:id="@+id/destination_authentication"
android:name="com.muchammadagunglaksana.kumpul_muslim.Fragments.Authentication.AuthenticationFragment"
tools:layout="@layout/fragment_authentication">
<action android:id="@+id/action_toLogin"
app:destination="@id/destination_loginUsingEmail"/>
<action android:id="@+id/action_toRegister"
app:destination="@id/destination_registerUsingEmail"/>
</fragment>
<fragment android:id="@+id/destination_registerUsingEmail"
android:name="com.muchammadagunglaksana.kumpul_muslim.Fragments.Authentication.RegisterUsingEmailFragment"
tools:layout="@layout/fragment_register_using_email"/>
<fragment android:id="@+id/destination_welcome"
android:name="com.muchammadagunglaksana.kumpul_muslim.Fragments.WelcomeAndOnBoarding.WelcomeFragment"
tools:layout="@layout/fragment_welcome">
<action android:id="@+id/action_toAuthentication"
app:destination="@id/destination_authentication"/>
</fragment>
<fragment android:id="@+id/destination_change_password"
android:name="com.muchammadagunglaksana.kumpul_muslim.Fragments.Authentication.ChangePasswordFragment"
tools:layout="@layout/fragment_change_password"/>
<fragment android:id="@+id/destination_loginUsingEmail"
android:name="com.muchammadagunglaksana.kumpul_muslim.Fragments.Authentication.LoginUsingEmailFragment"
tools:layout="@layout/fragment_login_using_email">
<action android:id="@+id/action_toChangePassword"
app:destination="@id/destination_change_password"/>
</fragment>
<fragment android:id="@+id/destination_home" android:name="com.muchammadagunglaksana.kumpul_muslim.Fragments.Home.HomeFragment"
tools:layout="@layout/fragment_home"/>
<action android:id="@+id/action_global_homeFragment" app:destination="@id/destination_home"/>
<fragment android:id="@+id/destination_create_event"
android:name="com.muchammadagunglaksana.kumpul_muslim.Fragments.CreateEvent.CreateEventFragment"
tools:layout="@layout/fragment_create_event"/>
<fragment android:id="@+id/destination_user_control"
android:name="com.muchammadagunglaksana.kumpul_muslim.Fragments.UserControl.UserControlFragment"
tools:layout="@layout/fragment_profile"/>
<fragment android:id="@+id/destination_search" android:name="com.muchammadagunglaksana.kumpul_muslim.Fragments.Search.SearchFragment"
tools:layout="@layout/fragment_search"/>
<fragment android:id="@+id/destination_choose_user_location"
android:name="com.muchammadagunglaksana.kumpul_muslim.Fragments.Reusable.ChooseUserLocationFragment"
tools:layout="@layout/fragment_choose_user_location"/>
<action android:id="@+id/action_global_chooseUserLocationFragment" app:destination="@id/destination_choose_user_location"/><action android:id="@+id/action_global_destination_welcome" app:destination="@id/destination_welcome"/>
真的需要你的帮助,因为我是新手在使用导航组件
根据错误消息:
原因:科特林。UninitializedPropertyAccessException:lateinit属性McContext尚未初始化
com.muchammadagunglaksana.kumpul_muslim。片段。身份验证。登录使用电子邮件片段。(登录使用电子邮件ragment.kt:47)
您正在构造函数中访问mContext,但您的lateinit变量尚未初始化(不会初始化,因为在构造过程中未附加片段)。
我有两个活动,一个使用导航图,另一个不使用。如何从不使用导航控制器的活动导航到导航图中的片段? 我试图从ImportMonsterActivity(在将新实体添加到db之后)导航到MainActivity导航图中的EditMonsterFragment。 我想我应该能够创建一个正常的意图,并给它一些额外的东西来指定导航图中的位置,但是我没有找到这种导航的任何留档。一切要么使用另一个应用程序的深层链
您好,我已经使用导航组件和导航图从一个片段导航到另一个片段,我想要的是防止onBack完全按下,这样当用户单击onBack时,应用程序将退出。我正在从注册片段导航到主页片段。 这是导航图中的代码 这是我的代码,当点击注册按钮时,在注册片段中导航
我试着从一个片段到主要片段。编译器不喜欢我的代码,但我不确定是什么问题。转换片段的最佳实践是什么? //这是我要导航到的主片段的xml 2019-07-12 17:49:45.091 959 4-9594/com.example.cribb E/AndroidRuntime:致命异常:主进程:com.example.cribb,PID:9594 Android.content.res.resour
问题内容: 从第一个视图控制器导航到第二个视图控制器时收到错误消息。我的编码就是这样 问题是我总是收到这种错误消息 问题答案: 我已经找到答案了 斯威夫特4 迅捷3
我正在使用android中的新导航架构组件,在移动到一个新的片段后,我被困在清除导航堆栈中。 示例:我在loginFragment中,当我导航到home片段时,我希望该片段从堆栈中清除,这样当用户按下back按钮时,他就不会返回到loginFragment。 我正在使用一个简单的navhostfragment.findnavcontroller(Fragment).navigate(r.id.ho
问题内容: 我正在使用以下代码以编程方式导航到另一个ViewController。它可以正常工作,但是在某种程度上隐藏了。 我该如何解决? (如果需要的话,可通过将嵌入来创建导航栏。) 问题答案: 斯威夫特5 默认的模式呈现样式是卡片。这在顶部显示了以前的视图控制器,并允许用户滑动显示的视图控制器。 为了保留旧样式,您需要修改视图控制器,如下所示: 对于以编程方式创建和情节提要创建的控制器来说都是