NoSuchMethodError при использовании setNavigationBarDividerColor ()? - PullRequest
0 голосов
/ 16 октября 2018

Я пытался создать разделитель между панелью навигации и содержимым моего приложения, когда они одного цвета, так же, как это делал Google с последними обновлениями Material Design 2.0 для своих приложений, таких как Google Contacts и Google Home.Я пытался сделать это так:

getWindow().setNavigationBarDividerColor(Color.GRAY);

Однако при попытке получить NoSuchMethodError.

Я пытаюсь найти способ исправить этоили другой способ поставить разделитель над панелью навигации.

Вот стек:

10-16 20:33:47.257 30336-30336/? E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.diamonddevelopment.scholarly, PID: 30336
        java.lang.NoSuchMethodError: No virtual method setNavigationBarDividerColor(I)V in class Landroid/view/Window; or its super classes (declaration of 'android.view.Window' appears in /system/framework/framework.jar!classes2.dex)
            at com.diamonddevelopment.scholarly.base.BaseActivity.styleNavBar(BaseActivity.java:101)
            at com.diamonddevelopment.scholarly.base.BaseActivity.setToolbars(BaseActivity.java:78)
            at com.diamonddevelopment.scholarly.fragments.TimetableFragment.onCreateView(TimetableFragment.java:79)
            at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2439)
            at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
            at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
            at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
            at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:802)
            at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
            at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
            at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
            at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
            at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3273)
            at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3229)
            at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:201)
            at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:620)
            at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1413)
            at android.app.Activity.performStart(Activity.java:7061)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2874)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2989)
            at android.app.ActivityThread.-wrap11(Unknown Source:0)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688)
            at android.os.Handler.dispatchMessage(Handler.java:106)
            at android.os.Looper.loop(Looper.java:164)
            at android.app.ActivityThread.main(ActivityThread.java:6753)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

1 Ответ

0 голосов
/ 16 октября 2018

setNavigationBarDividerColor()

  • Показывает тонкую линию указанного цвета между панелью навигации и содержимым приложения.

Метод setNavigationBarDividerColor() был добавлен на уровне API 28 , поэтому он будет работать только на уровне API 28 и выше

Нельзя использовать setNavigationBarDividerColor()метод ниже уровня API 28

Когда вы используете setNavigationBarDividerColor(), вы получите предупреждение ниже скриншота

enter image description here

SAMPLEКОД

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
     getWindow().setNavigationBarDividerColor(Color.GRAY)
  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...