setDrawerListener 메소드는 추천되지 않습니다


226

내 앱에서 무언가를하고있는 동안 내 앱의 탐색 창에서 크기가 줄어 듭니다. 그러나 나는 그것에 대해 아무것도하지 않습니다.

탐색 창

그런 다음 코드를 확인한 후 setDrawerListener가 더 이상 사용되지 않는 것을 보았습니다. 누구든지 이것에 대한 해결책이 있습니까?

drawerLayout.setDrawerListener(actionBarDrawerToggle);

9
더 이상 사용되지 않는 코드는 서랍 크기와 관련이 없습니다. 향후 지원을 중단 할 것입니다 (구체적인 방법). 아마 addDrawerListener로 대체되었지만 확실하지 않습니다.
chRyNaN

나는 본다 .. 그러나 나는 어떤 문제도 볼 수 없다, 나는 단지 그 서랍에 연결되지 않은 새로운 조각을 만들었다. 왜 그런 일이 일어 났는지 이해할 수 없다 ...
david glorioso

어떤 버전의 라이브러리를 사용하고 있습니까?
Amit Vaghela

나는 이것을 사용하고 있습니다 >> compile 'com.android.support:appcompat-v7:23.2.0', 'com.android.support:design:23.2.0', 'com.android.support:support-v4 컴파일 : 23.2.0 '
david glorioso

답변:


751

addDrawerListener()대신 사용하십시오 .


13
왜. 간단하게 왜?
브로크

9
그들은 왜이 쓰레기를 하는가
Alex Wohlbruck

7
API 일관성을 위해. 그들은 추가 된 removeDrawerListener()매우 add...일치 이름
마르신 ORLOWSKI에게

26
적어도 그들은 use 'addDrawerListener' instead더 이상 사용되지 않는 메시지에 포함될 수있었습니다 !
AaA

1
그렇다면 ... 서랍 청취자를 여러 개 추가 할 수 있습니까?
Kenny Worden

84

바꾸다:

drawer.setDrawerListener(...);

drawer.addDrawerListener(...);

public void setDrawerListener(DrawerLayout.DrawerListener listener) 리스너에게 drawer 이벤트를 통지하도록 설정합니다.

이 메소드는 더 이상 사용되지 않으며 addDrawerListener(DrawerLayout.DrawerListener)리스너를 추가 removeDrawerListener(DrawerLayout.DrawerListener)하고 등록 된 리스너를 제거하는 데 사용해야 합니다 .


18
드로어 리스너를 어디에서 제거해야합니까?
Portfoliobuilder

@portfoliobuilder 따라 다릅니다. 일반적으로 필요하지 않습니다. 설정하고 onCreate()화면을 회전하면 전체 활동이 다시 작성되고 새 리스너가 설정됩니다. 보다 복잡한 경우는로 설정되는 리스너가 둘 이상일 필요가 없다고 생각하여 처리해야합니다 DrawerLayout.
Johnny Five

29

바꾸다 setDrawerListener

drawerLayout.setDrawerListener(actionBarDrawerToggle);

addDrawerListener

drawerLayout.addDrawerListener(actionBarDrawerToggle);

  DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            assert drawer != null;
            drawer.addDrawerListener(toggle);
            toggle.syncState();

            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            assert navigationView != null;
            navigationView.setNavigationItemSelectedListener(this);

22

내 질문에 대답 할 것 같아 최신 navigationViewandroid:layout_height거의 18dp당신이 선택할 때 기본값 을 생성 합니다 "wrap_content". 따라서 android:layout_height원하는 것을 선택 navigationView하거나 간단하게 만들어야 android:layout_height="match_parent"합니다.

<android.support.design.widget.NavigationView
    android:layout_width="320dp"
    android:layout_height="550dp"
    android:id="@+id/navigation_view_admin"
    android:layout_gravity="start">

</android.support.design.widget.NavigationView>

어쨌든 탐색 창에 항목을 추가하면 높이가 자동으로 증가합니다.

마지막 으로 Luxi Liu가 말한 addDrawerListener()대신 사용하십시오 setDrawerListener().


6
그게 내 주요 질문이 아니기 때문입니다. 보이지 않습니까? 전에 내 문제를 읽어주십시오 ... 그것은 더 이상 사용되지 않는 것이 아닙니다.
david glorioso

7
질문 제목을 수정하십시오.
Sharique Abdullah
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.