Anm*_*mol 1 android kotlin android-navigation android-architecture-navigation androidx
我正在尝试在应用程序中使用Nav Component的最新更新
我可以在其中添加dialog(BottomSheetDialogFragment)nav graph
nav_version = "2.1.0-alpha05"
Run Code Online (Sandbox Code Playgroud)
来自我的部分代码nav_graph:
<dialog
android:id="@+id/settingFragment"
android:name="com.andor.navigate.notepad.listing.fragment.SettingFragment"
tools:layout="@layout/fragment_setting">
<action
android:id="@+id/action_settingFragment_to_confirmationFragment"
app:destination="@id/confirmationFragment" />
</dialog>
<dialog
android:id="@+id/confirmationFragment"
android:name="com.andor.navigate.notepad.ConfirmationFragment"
tools:layout="@layout/fragment_confirmation" />
Run Code Online (Sandbox Code Playgroud)
在我的设置片段中,我有一个button(logout_btn)来触发动作:action_settingFragment_to_confirmationFragment
OnActivityCreated设置片段中的代码:
logout_btn.setOnClickListener {
Navigation.findNavController(view!!).navigate(R.id.action_settingFragment_to_confirmationFragment)
}
Run Code Online (Sandbox Code Playgroud)
当我单击按钮时,出现运行时异常:
java.lang.IllegalStateException:查看androidx.constraintlayout.widget.ConstraintLayout {550ae09 VE ............. 1,1-719,526}在androidx.navigation.Navigation.findNavController上未设置NavController (Navigation.java:84)在com.andor.navigate.notepad.listing.fragment.SettingFragment $ onActivityCreated $ 2.onClick(SettingFragment.kt:56)在android.view.View.performClick(View.java:7352) .view.View.performClickInternal(View.java:7318)在android.view.View.access $ 3200(View.java:846)在android.view.View $ PerformClick.run(View.java:27800)在android.os android.os.Handler.dispatchMessage(Handler.java:99)位于android.os.Looper.loop(Looper.java:214)位于android.app.ActivityThread处的.Handler.handleCallback(Handler.java:873)。com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493)的java.lang.reflect.Method.invoke(本机方法)的main(ActivityThread.java:7045) os.ZygoteInit.main(ZygoteInit.java:965)
我的目的是从另一个对话框打开一个对话框,但是由于某种原因,我的对话框没有(缺少)NavController。
我已经提到了源代码
A DialogFragment在完全独立的窗口中操作,该窗口与您的视图不在同一视图层次结构中NavController。
如果您使用的依赖项会沿片段层次结构向上查找NavController,则应使用NavHostFragment.findNavController(this)(where this是您的DialogFragment))或Kotlin扩展名。findNavController()fragment-ktx
| 归档时间: |
|
| 查看次数: |
1377 次 |
| 最近记录: |