首页 > 解决方案 > 底部导航菜单 onClick 图标选择

问题描述

我认为有两个问题是相关的。背景:我有三个底部导航项,它们导致其他布局和活动;其中之一是家庭。

  1. 在 Home 中,执行 onClick 时,将打开选定的活动和布局,但选定的图标仅在单击时突出显示,然后突出显示 Home。如果再次按下,则会突出显示选定的布局图标。如何在第一次单击时突出显示图标?

  2. 主页还有三个其他按钮,可引导其他活动。选择房屋时,返回家园需要大量时间。为什么呢?其他活动/布局暂时是空的。我需要在后台运行服务吗?主页 Java/Activity 代码不长,但需要很长时间才能返回。

真的很感激一些想法。也许答案是零碎的,但不确定这是否能解决第一个问题?我已经包含了我的代码,用于从主页进行底部导航。问候, 爱德华

PS 我一个月前才开始使用 Java 和 Android Studio。

    //Declare navigation view ID (bottomnav_view) in content_main
    BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomnav_view);
    bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()){
                case R.id.ic_home: break;
                case R.id.ic_instruments:
                    Intent intentinstruments = new Intent(MainActivity.this, InstrumentListActivity.class);
                    startActivity(intentinstruments);
                    break;
                case R.id.ic_methods:
                    Intent intentmethods = new Intent(MainActivity.this, MethodsActivity.class);
                    startActivity(intentmethods);
                    break;
            }
            return true;
        }
    });
    //End of bottom hav handler

标签: javaandroidandroid-studioandroid-bottom-nav-view

解决方案


在实现 BottomNavigationView 时,总是首选片段。

试试这个方法。

bottomNavigationView.setOnNavigationItemSelectedListener(new  
    BottomNavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        Fragment selectedFragment = null;

        switch (item.getItemId()){
            case R.id.navigation_News:
                selectedFragment = ItemoneFragment.newInstance();
                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.content,selectedFragment);
                transaction.addToBackStack(null);
                transaction.commit();
                return true;

            case R.id.navigation_profile:
                selectedFragment = ItemtwoFragment.newInstance();
                transaction = getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.content,selectedFragment);
                transaction.addToBackStack(null);
                transaction.commit();
                return true;

        }
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.content, selectedFragment);
        transaction.commit();
        return true;
    }
});

推荐阅读