为了账号安全,请及时绑定邮箱和手机立即绑定

BottomNavigationView 的菜单未选择

BottomNavigationView 的菜单未选择

陪伴而非守候 2023-06-21 13:21:32
当我刚刚单独创建BottomNavigationView 时效果很好。但是将 BottomNavigationView 与 Fragment 一起使用有问题。问题是 Fragment 变化良好,但 BottomNavigationView 菜单固定在第一个菜单上。我需要在哪里设置编码/字符集?(对不起,我的英语不好...)package com.example.ui;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.fragment.app.FragmentManager;import androidx.fragment.app.FragmentTransaction;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import com.google.android.material.bottomnavigation.BottomNavigationView;public class HomeActivity extends AppCompatActivity implements View.OnClickListener{    private FragmentManager fragmentManager = getSupportFragmentManager();    private menu1Fragment menu1Fragment = new menu1Fragment();    private menu2Fragment menu2Fragment = new menu2Fragment();    private menu3Fragment menu3Fragment = new menu3Fragment();    private menu4Fragment menu4Fragment = new menu4Fragment();    @Override    protected void onCreate(Bundle savedInstanceState){        super.onCreate(savedInstanceState);        getSupportActionBar().setIcon(R.drawable.logo);        getSupportActionBar().setDisplayShowHomeEnabled(true);        setContentView(R.layout.activity_home);        BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation_view);        FragmentTransaction transaction = fragmentManager.beginTransaction();        transaction.replace(R.id.frame_home, menu1Fragment).commitAllowingStateLoss();        bottomNavigationView.setOnNavigationItemSelectedListener(new ItemSelectedListener());    }    class ItemSelectedListener implements BottomNavigationView.OnNavigationItemSelectedListener {        @Override        public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {            FragmentTransaction transaction = fragmentManager.beginTransaction();            switch (menuItem.getItemId()) {                case R.id.navigation_menu1:            }            return false;        }    }
查看完整描述

2 回答

?
达令说

TA贡献1821条经验 获得超6个赞

尝试像这样最后返回 true


 class ItemSelectedListener implements BottomNavigationView.OnNavigationItemSelectedListener {

    @Override

    public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

        FragmentTransaction transaction = fragmentManager.beginTransaction();


        switch (menuItem.getItemId()) {

            case R.id.navigation_menu1:

                transaction.replace(R.id.frame_home, menu1Fragment).commitAllowingStateLoss();

                break;

            case R.id.navigation_menu2:

                transaction.replace(R.id.frame_home, menu2Fragment).commitAllowingStateLoss();

                break;

            case R.id.navigation_menu3:

                transaction.replace(R.id.frame_home, menu3Fragment).commitAllowingStateLoss();

                break;

            case R.id.navigation_menu4:

                transaction.replace(R.id.frame_home, menu4Fragment).commitAllowingStateLoss();

                break;

        }

        return true;

    }

}


查看完整回答
反对 回复 2023-06-21
?
翻阅古今

TA贡献1780条经验 获得超5个赞

试试这段代码。


 return false;

 or 

 return true;


  public boolean onNavigationItemSelected(@NonNull MenuItem item) {

    // uncheck the other items.

    mMenuId = item.getItemId();

    for (int i = 0; i < mBtmView.getMenu().size(); i++) {

        MenuItem menuItem = mBtmView.getMenu().getItem(i);

        boolean isChecked = menuItem.getItemId() == item.getItemId();

        menuItem.setChecked(isChecked);

    }


    switch (item.getItemId()) {

        case R.id.action_food: {

        }

        break;

        case R.id.action_medical: {

        }

        break;

        case R.id.action_yoga: {

        }

        break;

        case R.id.action_postures: {

        }

        break;

    }

    return true;

}


查看完整回答
反对 回复 2023-06-21
  • 2 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信