본문 바로가기

TIL

TIL 52일차 - 최종프로젝트

트러블슈팅

문제 : Navigation Drawer 구현 시 다른 Fragment와의 상호작용이 안된다

Drawer는 잘 구현되었지만...
Fragment의 Button 클릭시 앱이 죽어버린다

 

시도

Navigation Drawer를 구현할 때 activity_main.xml 레이아웃을 ConstraintLayout 에서 DrawerLayout으로 바꿔서 생긴 문제인 것 같아서, activity_main.xml 레이아웃은 ConstraintLayout으로 하고 drawer_layout.xml 레이아웃을 따로 DrawerLayout으로 만들고 activity_main.xml 에 include하는 방식을 사용해봤다. 하지만 이렇게 하면 drawer와의 상호작용이 되지 않는 문제가 있었다.

원인

DrawerLayout을 만들 때 구조가 잘못되면 View 레벨에 문제가 생겨 동작하지 않는 것이였다.

 

https://show-me-the-money.tistory.com/entry/kotlin-Navigation-Drawer-%EB%84%A4%EB%B9%84%EA%B2%8C%EC%9D%B4%EC%85%98-%EC%BB%A4%EC%8A%A4%ED%85%80-%EC%99%84%EB%B2%BD%EC%A0%95%EB%A6%AC-feat-Expandable-List-%EC%BB%A4%EC%8A%A4%ED%85%80

 

[kotlin] Navigation Drawer 네비게이션 커스텀 완벽정리 feat. Expandable List 커스텀

Navigation Drawer는 정말 많은 앱 서비스에서 활용되는 레이아웃입니다. 흔히 사이드 메뉴라고도 하죠. 막상 적용하려고 보면 은근히 손이 가는 게 많은데요. 커스텀을 하게 될 경우 좀 많이 어려워

show-me-the-money.tistory.com

 

 

해결시도

글을 참고해 DrawerLayout의 구조를 바꿨더니 해결되었다

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:background="@color/white"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

            <FrameLayout
                android:id="@+id/fr_main"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="250dp"
        android:layout_height="match_parent"
        android:backgroundTint="@color/white"
        android:layout_gravity="start"
        app:headerLayout="@layout/navigation_header"
        app:menu="@menu/navigation_drawer" />

</androidx.drawerlayout.widget.DrawerLayout>

 

다만 또 다른 문제가 있는데, 지금은 Navigation Drawer를 화면 슬라이드를 통해 열도록 구현했는데, 이렇게 하면 사용하가 Navigation Drawer의 존재도 모를 수 있게된다. 버튼을 통해 SetOnClickListener를 통해 열도록 구현하면 이런 문제가 해결되지만, Activity 위에 버튼을 만들면 Fragment에 가려져서 버튼이 보이지 않게 되는 문제가 있었다. 이 부분은 이후에 해결할 예정이다.

'TIL' 카테고리의 다른 글

TIL 54일차 - 최종프로젝트  (0) 2024.06.06
TIL 53일차 - 최종프로젝트  (1) 2024.06.05
TIL 51일차 - 최종프로젝트  (0) 2024.06.03
TIL 50일차 - 최종프로젝트  (0) 2024.05.31
TIL 49일차 - 최종프로젝트  (0) 2024.05.30