NullPoInterException:尝试调用虚拟方法' int android.view.viewgroup.getPaddingBottom()'在null对象参考上

发布于 2025-02-07 20:34:45 字数 5034 浏览 3 评论 0 原文

当我试图将菜单充气到 bottom navigationView 时崩溃,但在同一菜单上崩溃了。我从'com.google.android.material:1.2.1' 'com.google.android.material.material.material.material:1.6.1'

注意:'com.google.android.material:材料:1.2.1'使用相同的代码

mainActivity

public class MainActivity extends AppCompatActivity {
    private final BottomNavigationView.OnNavigationItemSelectedListener bottomNavListener = item -> {
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bottomNavigationView = findViewById(R.id.bottom_navigation);
        bottomNavigationView.setItemIconTintList(null);
        bottomNavigationView.setOnNavigationItemSelectedListener(bottomNavListener);
        bottomNavigationView.getMenu().clear();
        bottomNavigationView.inflateMenu(R.menu.menu_bottom_navigation); // CRASH IS HERE
    }
}

菜单>菜单>菜单>菜单>

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/bottom_nav_home"
        android:icon="@drawable/bottom_nav_home_icon_selector"
        android:title="@string/home_title" />

    <item
        android:id="@+id/bottom_nav_screen2"
        android:icon="@drawable/bottom_nav_screen2_icon_selector"
        android:title="@string/savings_screen2" />

    <item
        android:id="@+id/bottom_nav_screen3"
        android:icon="@drawable/bottom_nav_screen3_icon_selector"
        android:title="@string/screen3_title" />

    <item
        android:id="@+id/bottom_nav_screen4"
        android:icon="@drawable/bottom_nav_screen4_icon_selector"
        android:title="@string/screen4_title" />

    <item
        android:id="@+id/bottom_nav_screen5"
        android:icon="@drawable/bottom_nav_screen5_icon_selector"
        android:title="@string/screen5_title" />

</menu>

activity_main

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:id="@+id/layout"
    android:layout_height="match_parent"
    tools:context=".ui.main.MainActivity">

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/main_fragment_container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        app:layout_constraintBottom_toTopOf="@+id/bottom_navigation"
        app:layout_constraintTop_toTopOf="parent" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:itemTextAppearanceActive="@style/BottomNavigationView.Active"
        app:itemTextAppearanceInactive="@style/BottomNavigationView"
        app:itemTextColor="@drawable/bottom_nav_selector"
        app:labelVisibilityMode="labeled"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/main_fragment_container" />

</androidx.constraintlayout.widget.ConstraintLayout>

<代码>错误

2022-06-14 19:49:18.562 18439-18439/com.example.android.debug E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.android.debug, PID: 18439
    java.lang.RuntimeException: Unable to start activity 
    ComponentInfo{com.example.android.debug/com.example.android.ui.main.MainActivity}: 
    java.lang.NullPointerException: Attempt to invoke virtual method 'int 
    android.view.ViewGroup.getPaddingBottom()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        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:858)

Crashing when I am trying to inflate menu to BottomNavigationView but got crash on same. I have updated material design library from 'com.google.android.material:material:1.2.1' to 'com.google.android.material:material:1.6.1'.

Note: Not crashing for 'com.google.android.material:material:1.2.1' with same code

MainActivity

public class MainActivity extends AppCompatActivity {
    private final BottomNavigationView.OnNavigationItemSelectedListener bottomNavListener = item -> {
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bottomNavigationView = findViewById(R.id.bottom_navigation);
        bottomNavigationView.setItemIconTintList(null);
        bottomNavigationView.setOnNavigationItemSelectedListener(bottomNavListener);
        bottomNavigationView.getMenu().clear();
        bottomNavigationView.inflateMenu(R.menu.menu_bottom_navigation); // CRASH IS HERE
    }
}

menu_bottom_navigation

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/bottom_nav_home"
        android:icon="@drawable/bottom_nav_home_icon_selector"
        android:title="@string/home_title" />

    <item
        android:id="@+id/bottom_nav_screen2"
        android:icon="@drawable/bottom_nav_screen2_icon_selector"
        android:title="@string/savings_screen2" />

    <item
        android:id="@+id/bottom_nav_screen3"
        android:icon="@drawable/bottom_nav_screen3_icon_selector"
        android:title="@string/screen3_title" />

    <item
        android:id="@+id/bottom_nav_screen4"
        android:icon="@drawable/bottom_nav_screen4_icon_selector"
        android:title="@string/screen4_title" />

    <item
        android:id="@+id/bottom_nav_screen5"
        android:icon="@drawable/bottom_nav_screen5_icon_selector"
        android:title="@string/screen5_title" />

</menu>

activity_main

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:id="@+id/layout"
    android:layout_height="match_parent"
    tools:context=".ui.main.MainActivity">

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/main_fragment_container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        app:layout_constraintBottom_toTopOf="@+id/bottom_navigation"
        app:layout_constraintTop_toTopOf="parent" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:itemTextAppearanceActive="@style/BottomNavigationView.Active"
        app:itemTextAppearanceInactive="@style/BottomNavigationView"
        app:itemTextColor="@drawable/bottom_nav_selector"
        app:labelVisibilityMode="labeled"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/main_fragment_container" />

</androidx.constraintlayout.widget.ConstraintLayout>

Error

2022-06-14 19:49:18.562 18439-18439/com.example.android.debug E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.android.debug, PID: 18439
    java.lang.RuntimeException: Unable to start activity 
    ComponentInfo{com.example.android.debug/com.example.android.ui.main.MainActivity}: 
    java.lang.NullPointerException: Attempt to invoke virtual method 'int 
    android.view.ViewGroup.getPaddingBottom()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        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:858)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

戏剧牡丹亭 2025-02-14 20:34:45

通过创建 design_bottom_navigation_item.xml 的副本来解决它,然后将其放置 res/layout 文件路径

Resolved it by creating a duplicate of design_bottom_navigation_item.xml and put it res/layout file path

https://github.com/material-components/material-components-android/issues/2064#issuecomment-2057269767

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文