I have an ChatRoomActivity with a NavHostFragment. Default fragment is ConversatioFragment which can open a MessageChoicesFragment which is a BottomSheetDialogFragment. There we have 3 choices 1) Copy message 2) Read from 3) Delete message.
If i click the 2) Read from (where i can see what recipients have read the message) i want to close the MessageChoicesFragment and open the MessageReadDialogFragment BottomSheetFragment.
So the desired flow that i want is this
ChatRoomActivity {
ConversationFragment --onClick--> MessageChoicesFragment --onClick-->
MessageReadDialogFragment
}
With more details. The navGraph of the ChatRoomActivity is the following
<?xml version="1.0" encoding="utf-8"?>
<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/chat_room_nav_menu"
app:startDestination="@id/conversationFragment">
<fragment
android:id="@+id/conversationFragment"
android:name="com.example.ui.fragments.chatroom.ConversationFragment"
android:label="conversation_fragment"
tools:layout="@layout/conversation_fragment" >
<action
android:id="@+id/action_conversationFragment_to_messageChoicesFragment"
app:destination="@id/messageChoicesFragment" />
<action
android:id="@+id/action_conversationFragment_to_messageReadDialogFragment"
app:destination="@id/messageReadDialogFragment" />
</fragment>
<dialog
android:id="@+id/messageReadDialogFragment"
android:name="com.example.ui.dialogs.chatroom.MessageReadDialogFragment"
android:label="MessageReadDialogFragment"
tools:layout="@layout/message_read_panel"/>
<dialog
android:id="@+id/messageChoicesFragment"
android:name="com.example.ui.dialogs.chatroom.MessageChoicesFragment"
android:label="fragment_message_choices"
tools:layout="@layout/fragment_message_choices" />
</navigation>
When user longPress on a message i open the MessageChoicesFragment
override fun onRowLongClicked() {
findNavController().navigate(R.id.action_conversationFragment_to_messageChoicesFragment)
}
The MessageChoicesFragment has 3 buttons. When i press the "Read from" button i want to close the MessageChoicesFragment and open the MessageReadDialogFragment
binding.readFromLayout.setOnClickListener {
findNavController().navigate(R.id.action_conversationFragment_to_messageReadDialogFragment)
dialog?.dismiss()
}
However, this does not work since the current destination cannot find the action from another destination to "somewhere"
java.lang.IllegalArgumentException: Navigation action/destination com.example:id/action_conversationFragment_to_messageReadDialogFragment cannot be found from the current destination Destination(com.example:id/messageChoicesFragment) label=fragment_message_choices
So how can i solve that?