【问题标题】:Bottom navigation view not working when i connected it with viewpager当我将其与 viewpager 连接时,底部导航视图不起作用
【发布时间】:2018-02-17 12:40:55
【问题描述】:

我正在尝试将 viewpager 放在底部导航视图的选项卡之一中,我成功放置了 viewpager,但是当我单击底部导航选项卡时,它们不起作用,也许 viewpager 完全重叠在底部导航上看,我试过搜索,但没有运气。

ScreenShot

当我点击它们时标签没有改变,但是当我滑动它们时它们正在改变,当我点击底部导航标签时没有任何事情发生。

更新:ViewPager 与底部导航视图片段的所有片段重叠。

我设置底部导航视图的方式

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        Fragment selectedFragment = null;
        switch (item.getItemId()) {
            case R.id.navigation_home:
                selectedFragment = HomePageFragment.newInstance();
                break;

            case R.id.navigation_order:
                selectedFragment = OrdersFragment.newInstance();
                break;

            case R.id.navigation_dashboard:
                selectedFragment = ProfilePageFragment.newInstance();
                break;
        }
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.content, selectedFragment);
        transaction.commit();
        return true;
    }
};

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

    checkConnection();

    mAuth = FirebaseAuth.getInstance();

    firebaseDatabase = FirebaseDatabase.getInstance();

    databaseReference = firebaseDatabase.getReference().child("Merchants").child(mAuth.getCurrentUser().getUid()).child("profile");

    profileNotCompleted();

    BottomNavigationView navigation = findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

    if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) {
        getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content,
                        new HomePageFragment()).commit();
    }
}

这就是我设置 ViewPager 的方式

final View rootView = inflater.inflate(R.layout.fragment_home_page, container, false);
    ViewPager viewPager = rootView.findViewById(R.id.viewpager);
    viewPager.setAdapter(new MenuCategoryFragmentPagerAdapter(getChildFragmentManager(), getActivity()));
    TabLayout tabLayout = rootView.findViewById(R.id.sliding_tabs);
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    tabLayout.setTabMode(TabLayout.MODE_FIXED);
    tabLayout.setupWithViewPager(viewPager);

在底部导航视图的片段之一内。

我的问题是:

为什么 ViewPager 会附加到 Activity 而不是主页片段内?

请帮帮我。

【问题讨论】:

  • 你能发布你的代码吗?
  • 所以据我所知,您应该有一个活动,您已经设置了底部导航并且您需要有 3 个片段,其中一个片段包含一个带有选项卡式布局的视图寻呼机。至于您的 xml,活动应该只包含带有工具栏的底部导航视图和中间的框架布局以加载片段,视图分页器和选项卡布局应该在片段布局内,这是您到目前为止所做的吗?
  • 是的,到目前为止我是怎么做的@JudeFernandes,但是带有视图寻呼机的一种布局与所有片段重叠。
  • 您能否发布活动布局的 xml 以及包含 viewpager 和选项卡的片段,这似乎是一个布局问题,而不是 java 问题。
  • 我重新检查了我的 xml 文件,并以它们相互重叠的方式制作它们,感谢您指出 :) 现在一切正常。

标签: android android-viewpager bottomnavigationview


【解决方案1】:

您没有使用底部导航视图设置适配器。 你可以试试this 希望你能得到答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2023-03-17
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多