【问题标题】:Bottom Nagvigation View On click does not work底部导航视图单击不起作用
【发布时间】:2021-08-05 20:40:20
【问题描述】:
        navigationView = (BottomNavigationView) findViewById(R.id.navigation);
    navigationView.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            navigationView.postDelayed(() -> {
                int itemId = item.getItemId();
                System.out.println("it works");
                if (itemId == R.id.homeFragment) {
                    startActivity(new Intent(getApplicationContext(), HomeActivity.class));
                } else if (itemId == R.id.searchFragment) {
                    startActivity(new Intent(getApplicationContext(), SearchActivity.class));
                } else if (itemId == R.id.artistFragment) {
                    startActivity(new Intent(getApplicationContext(), ArtistProfileActivity.class));
                } else if (itemId == R.id.libraryFragment) {
                    startActivity(new Intent(getApplicationContext(), FavoriteActivity.class));
                }
                finish();
            }, 50);
            return true;
        }
    });

导航栏是可点击的,但没有将我带到下一页 没有错误消息。它只是停留在主页上。我不太确定 BottomNavigationView 是如何工作的,并且大部分代码来自在线,我无法理解它。

【问题讨论】:

    标签: java android-studio


    【解决方案1】:

    在您的问题中,您说您并不真正了解 BotttomNavigationView 的工作原理,我提供了一个链接 here 到 YouTube 上最好的 android 开发导师之一,这将帮助您深入了解它,但更清楚关于如何从您刚刚在顶部提供的代码中执行此操作,那么我建议您使用我在下面使用的开关盒,并且按照 CodingInFlow 教程对我来说效果很好

    private final BottomNavigationView.OnNavigationItemSelectedListener navListener =
            item -> {
                Fragment selectedFragment = null;
    
                switch (item.getItemId()) {
                    case R.id.home:
                        selectedFragment = new HomeFragment();
                        break;
    
                    case R.id.categories:
                        selectedFragment = new CategoriesFrag();
                        break;
    
                    case R.id.cart:
                        selectedFragment = new CartFragment();
                        break;
    
                    case R.id.transactions:
                        selectedFragment=new TransactionsFrag();
                        break;
    
                    case R.id.customerProfile:
                        selectedFragment=new ProfileFragment();
                        break;
    
                }
    
                assert selectedFragment != null;
                getSupportFragmentManager().beginTransaction().replace(R.id.customer_container, selectedFragment).commit();
                return true;
            };
    

    【讨论】:

    • 有没有办法用活动而不是片段来做到这一点,或者只是去活动
    • 不像here 解释的那样,真的不推荐使用活动,但是按照链接,您将学习如何使用活动,尽管强烈建议使用片段
    猜你喜欢
    • 1970-01-01
    • 2020-01-12
    • 2021-10-20
    • 2023-03-17
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    相关资源
    最近更新 更多