java - 点击底部菜单时如何打开侧面抽屉导航?

标签 java android navigation-drawer bottomnavigationview

这就是我想要实现的目标

我想要设置菜单点击将出现侧面抽屉导航

enter image description here

HomeActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    mMainFrame  =   (FrameLayout) findViewById(R.id.main_frame);
    mMainNav    =   (BottomNavigationView) findViewById(R.id.main_nav);

    homeFragment         =   new HomeFragment();
    analyticsFragment    =   new AnalyticsFragment();
    paymentFragment      =   new PaymentFragment();
    settingsFragment     =   new SettingsFragment();

    drawerLayout = findViewById(R.id.drawerlayout);

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.main_frame,new HomeFragment()).commit();

    mMainNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

            switch (menuItem.getItemId()) {
                case R.id.navigation_home:
                    setFragment(homeFragment);
                    return true;

                case R.id.navigation_analytics:
                    setFragment(analyticsFragment);
                    return true;

                case R.id.navigation_payment:
                    setFragment(paymentFragment);
                    return true;

                case R.id.navigation_settings:
                    drawerLayout.openDrawer(GravityCompat.END);
                    return true;

                default:
                    return false;
            }
        }
    });

    BottomNavigationView navView = findViewById(R.id.main_nav);
    navView.setItemIconTintList(null);

这是我得到的错误

Unable to start activity ComponentInfo{com.example.ewallet/com.example.ewallet.HomeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.app.Activity.findViewById(int)' on a null object reference

编辑:我尝试在此处粘贴一些代码,但 StackOverflow 错误代码太多,无法发布

最佳答案

您没有正确绑定(bind)对象并导致 NullPointerException。

请粘贴您的代码,我们可以为您提供帮助。

我看到了一个奇怪的部分,但也许这个错误仍然会出现,你可能需要粘贴你的layout.xml

mMainNav    =   (BottomNavigationView) findViewById(R.id.main_nav);


BottomNavigationView navView = findViewById(R.id.main_nav);
navView.setItemIconTintList(null);

应修改为

mMainNav.setItemIconTintList(null);

您可以使用

检查它是否为空
getActivity().findViewById(R.id.XXX)

更新

    drawerLayout = (DrawerLayout)getView().findViewById(R.id.drawerlayout);

    case R.id.navigation_settings:
                drawerLayout.openDrawer(drawerLayout);
                return true;

关于java - 点击底部菜单时如何打开侧面抽屉导航?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57032819/

相关文章:

Android Flutter 调试 - 设备未授权

Java运行时问题,但是构建项目没有错误

android - 如何在手机解锁时显示消息

android - fragment 内容在抽屉导航中的 ActionBar 上重叠

java - 尝试在 IntelliJ 上构建 gradle 项目时出现错误代码 B0

java - Spring @EnableRetry 抛出 InternalAutoProxyCreator

java - 在java webapps中持久化数据库连接参数

java - 如何修复 'Unknown type -1 when trying to add field ID to record '

android - 在某些 fragment 中隐藏抽屉导航

android - 在 Android 中禁用抽屉导航中的项目