2021年1月28日星期四

Can't access fragment after clearing it from back stack

I have two flows that can happen in my app: A1->A2->B or A1->B, A and B being different activities, 1 and 2 different fragments. When in B, there's no reason to go back to A2, so I'm using the following code to clear the stack of fragments before starting activity B (startControle()) from A2:

requireFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)  (activity as MainActivity?)?.startControle()  

The problem is that when I go back to A1 and try to go to A2, the app crashes

E/AndroidRuntime: FATAL EXCEPTION: main      Process: com.ufrj.projetointegrado, PID: 23181      java.lang.IllegalArgumentException: Navigation action/destination com.ufrj.projetointegrado:id/action_inicio_to_btOff cannot be found from the current destination Destination(com.ufrj.projetointegrado:id/btOff) label=btOff class=com.ufrj.projetointegrado.btOff          at androidx.navigation.NavController.navigate(NavController.java:938)          at androidx.navigation.NavController.navigate(NavController.java:875)          at androidx.navigation.NavController.navigate(NavController.java:861)          at androidx.navigation.NavController.navigate(NavController.java:849)          at com.ufrj.projetointegrado.inicio$onCreateView$1.onClick(inicio.kt:31)          at android.view.View.performClick(View.java:6600)          at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992)          at android.view.View.performClickInternal(View.java:6577)          at android.view.View.access$3100(View.java:781)          at android.view.View$PerformClick.run(View.java:25917)          at android.os.Handler.handleCallback(Handler.java:873)          at android.os.Handler.dispatchMessage(Handler.java:99)          at android.os.Looper.loop(Looper.java:215)          at android.app.ActivityThread.main(ActivityThread.java:6939)          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:870)  

Anyone knows what am I doing wrong?

EDIT

I also tried this way, but it behaves the same way:

val navController = this.findNavController()  navController.popBackStack(R.id.inicio, true);  (activity as MainActivity?)?.startControle()  
https://stackoverflow.com/questions/65947134/cant-access-fragment-after-clearing-it-from-back-stack January 29, 2021 at 08:20AM

没有评论:

发表评论