관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[안드로이드] Jetpack Navigation Fragment 관련 에러해결 java.lang.IllegalArgumentException: No view found for id 0x7f090102 (com.mtjin.bungsegwon:id/main_navigation_view) for fragment MainEnrollFragment{815f3ee} (abd6ddc7-177d-4b7a-99a0-3d2d4.. 본문

안드로이드/코틀린 & 아키텍처 & Recent

[안드로이드] Jetpack Navigation Fragment 관련 에러해결 java.lang.IllegalArgumentException: No view found for id 0x7f090102 (com.mtjin.bungsegwon:id/main_navigation_view) for fragment MainEnrollFragment{815f3ee} (abd6ddc7-177d-4b7a-99a0-3d2d4..

막무가내막내 2022. 1. 11. 22:14
728x90

 

 

 

 

[에러 사항]

 

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.mtjin.bungsegwon, PID: 1717
    java.lang.IllegalArgumentException: No view found for id 0x7f090102 (com.mtjin.bungsegwon:id/main_navigation_view) for fragment MainEnrollFragment{815f3ee} (abd6ddc7-177d-4b7a-99a0-3d2d4c1a4610 id=0x7f090102 tag=2131296509)
        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:513)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
        at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:112)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1647)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3128)
        at androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:3065)
        at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:2988)
        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:546)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2180)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2106)
        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
        at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7811)
        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:1076)
I/Process: Sending signal. PID: 1717 SIG: 9

 

 

Jetpack Navigation을 사용중인데 홈화면에서 다른 프래그먼트로 이동 후 뒤로가기 버튼으로 다시 홈화면으로 돌아오면 위와 같은 에러로 앱이 팅기는 문제가 발생하였습니다. 

 

 

 

[에러 원인]

No view found for id 0x7f090102 (com.mtjin.bungsegwon:id/main_navigation_view) for fragment MainEnrollFragment{

에러에 써있는대로 MainEnrollFragment 프래그먼트에서 main_navigation_view 라는 id를 못찾는 문제인 것 같았습니다.

그리고 구글링을 해봤는데 제 해결방법과 다른거만 나왔지만 다 id를 수정해주거나 Jeptack Navigation을 안쓰고 일반적인  트랜잭션으로 직접 프래그먼트을 구현하시는분은 replace로 바꾸는식으로 해결했음을 볼 수 있었습니다. 

getChildFragmentManager() 로 수정해서 해결하신분도 있었고요. 자세한건 아래 링크 남겨놨습니다.

 

https://stackoverflow.com/questions/7508044/android-fragment-no-view-found-for-id

 

Android Fragment no view found for ID?

I have a fragment I am trying to add into a view. FragmentManager fragMgr=getSupportFragmentManager(); feed_parser_activity content = (feed_parser_activity)fragMgr ...

stackoverflow.com

https://jionchu.tistory.com/133

 

[Android] java.lang.IllegalArgumentException: No view found for id for fragment

프로젝트 리팩토링 진행 중 프래그먼트 연결 부분에서 다음과 같은 오류가 발생했다. java.lang.IllegalArgumentException: No view found for id 0x7f080056 for fragment MainFragment id=0x7f080056} at androi..

jionchu.tistory.com

https://pythonq.com/so/android/214638

 

android - IllegalArgumentException : 조각의 id에 대한보기를 찾을 수 없음 — ViewPager의 ViewPager - IT 툴 넷

android - IllegalArgumentException : 조각의 id에 대한보기를 찾을 수 없음 — ViewPager의 ViewPager 기사 출처 android android-fragments android-viewpager

pythonq.com

 

 

[에러 해결]

먼저 에러에 명시된 id인 main_navigation_view에 가보았습니다.

fragment에 린트가 되어있고 FragmentContainerView로 변경해보라고 되어있어서 변경했더니 해결되었습니다.

FragmentContainerView는  Fragment를 위해 특별히 설계된 레이아웃이며 FrameLayout을 확장하여 프래그먼트 트랜잭션을 안정적으로 처리 할 수 ​​있고, 프래그먼트 동작을 조정할 수있는 추가 기능도 있습니다.

 

https://developer.android.com/reference/androidx/fragment/app/FragmentContainerView

 

FragmentContainerView  |  Android Developers

FragmentContainerView public final class FragmentContainerView FragmentContainerView is a customized Layout designed specifically for Fragments. It extends FrameLayout, so it can reliably handle Fragment Transactions, and it also has additional features to

developer.android.com

 

 

 

 

 

댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!

 

 

728x90
Comments