I navigate to a Fragment, when I press an element in my list and quickly press back I get this error, I dont know the exact line because it does not tell me where it happends, but I suspect is in my onCreateView
My code
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
if (rootView == null) {
rootView = inflater.inflate(R.layout.landing_fragment, container, false)
fetchShops(location)
setupRecyclerView(rootView!!)
}
return rootView
}
private fun setupRecyclerView(rootView: View) {
rootView.landing_rv.layoutManager = LinearLayoutManager(requireContext())
rootView.landing_rv.addItemDecoration(
DividerItemDecoration(
requireActivity(),
LinearLayoutManager.VERTICAL
)
)
rootView.landing_rv.adapter = landingAdapter
}
The error that the logcat throws is simply
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:5038)
at android.view.ViewGroup.addView(ViewGroup.java:4869)
at androidx.fragment.app.FragmentContainerView.addView(FragmentContainerView.java:280)
at android.view.ViewGroup.addView(ViewGroup.java:4809)
at android.view.ViewGroup.addView(ViewGroup.java:4782)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:326)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6806)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
I use the above check for rootview because I create just one instance of that fragment to prevent my viewModel (fetchShops) to fire twice