Materialdrawer: ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 18 нояб. 2018  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: mikepenz/MaterialDrawer

Об этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅

  • Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, спасибо Π·Π° созданиС красивой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
  • Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ я создал DrawerItem, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ OverflowMenuDrawerItem, ΠΎΠ½ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² установлСнном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½ΠΎ bindViewHelper (viewHolder) Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ NullPointerException Π² ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setTextColor(android.content.res.ColorStateList)' on a null object reference
  • ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» сбой Π² viewHolder.name.setTextColor(selectedTextColor); Π² BaseDescribeableDrawerItem ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ bindViewHelper (viewHolder). Когда я ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ cath, ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ запускаСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ (Π½ΠΎ элСмСнт ящика Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ описания)
  • Мой класс с использованиСм Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ°ΠΊΠ΅Ρ‚Π°, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅
    myclass

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ

  • ΠšΠΎΡ‚Π»ΠΈΠ½ΡΠΊΠΈΠΉ язык
  • Π’Ρ‹Π΄Π²ΠΈΠΆΠ½ΠΎΠΉ ящик для ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² 6.1.1
  • Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ вСрсии 1.0.0 (AndroidX)
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ сборки Gradle вСрсии 28.0.3
  • Android Studio вСрсии 3.2.1 (ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ)

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@sonhvp ΠΈΠ·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ΠΏΠΎΠ·Π΄Π½ΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚.

Π― Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, ΠΊΠ°ΠΊ это ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ: /.
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ обращаСтся ΠΊ прСдставлСниям ΠΌΠ°ΠΊΠ΅Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. ΠΊΠ°ΠΊ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ.

ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с настройкой ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ прилоТСния? Π―Ρ‰ΠΈΠΊ Π½Π΅ Π² Π½ΡƒΠΆΠ½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΈ Π½Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½?

ΠΈΠ»ΠΈ ваш Ρ‚ΠΎΠ²Π°Ρ€ находится Π² Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅, отсутствуСт ΠΌΠ°ΠΊΠ΅Ρ‚? ΠΈΠ»ΠΈ Ρ‚Π°ΠΊΠΎΠΉ?

ПослС ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· провСрял. Π― Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° являСтся ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ сбоя. Как Π²Ρ‹ упомянули, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊ прСдставлСниям ΠΌΠ°ΠΊΠ΅Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π― ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π· провСрял ΠΈ тСстировал, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎΡ‡Π΅ΠΌΡƒ. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ прилоТСния Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΌΠΎΠΉ тСстовый Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ: https://github.com/sonhvp/test_project.
Бпасибо Π·Π° Π²Π°ΡˆΡƒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ.

@sonhvp, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ, каТСтся, я понял, Ρ‡Ρ‚ΠΎ здСсь происходит.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ materialDrawer находятся Π² классС com.mikepenz.materialdrawer.R . Когда ваши ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ находятся Π² классС com.sonhvp.test . ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ свой собствСнный Ρ„Π°ΠΉΠ» xml , ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ находятся Π² вашСм пространствС ΠΈΠΌΠ΅Π½, Π½ΠΎ BaseViewHolder пытаСтся Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² пространствС ΠΈΠΌΠ΅Π½ materialdrawer . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ Π½Π΅ смоТСт Π½Π°ΠΉΡ‚ΠΈ просмотры, ΠΈ ΠΎΠ½ΠΈ останутся Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ просто Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅:

        init {
            this.icon = view.findViewById(R.id.material_drawer_icon)
            this.name = view.findViewById(R.id.material_drawer_name)
            this.description = view.findViewById(R.id.material_drawer_description)
        }

Π½Π° ваш ViewHolder Π² OverflowMenuDrawerItem (ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ это R вашСго ΠΏΠ°ΠΊΠ΅Ρ‚Π°)


Если я Π½Π΅ ошибаюсь, это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для прилоТСния, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ поля R для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² всС Π΅Ρ‰Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹, Π° Ρ‚Π΅ ΠΆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ просто ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ для ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ этого Π½Π΅ происходит. (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, это ΠΌΠΎΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅)

Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Π½ Google состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π² основном пространство ΠΈΠΌΠ΅Π½ всСх ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΡ… пСрСзаписи ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ модуля.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ