更改列表项上的底部选项卡的当前活动状态单击片段

时间:2018-02-12 10:31:13

标签: android android-fragments bottomnavigationview

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Data data = mListDatas.get(i);

            FragmentTransaction transaction = getFragmentManager().beginTransaction();
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
            ThirdFragment thirdFragment = new ThirdFragment();
            Bundle bundle = new Bundle();

            bundle.putSerializable("detail", data);
            thirdFragment.setArguments(bundle);
            transaction.replace(R.id.content,ThirdFragment).addToBackStack(null).commit();


   BottomNavigationView navigation = (BottomNavigationView)view.findViewById(R.id.navigation_bottomview);
            navigation.setSelectedItemId(R.id.navigation_third_tab);


        }
    });

在上面的代码中,我需要在列表项单击

的底部选项卡上打开一个新片段

我可以打开一个新片段,但当前标签保持不变,即在重定向到第三个底部标签上的第三个片段后,当前标签,即第二个标签处于活动状态。

如何将列表项的第二个选项卡上的底部选项卡的活动状态更改为第三个选项卡?

2 个答案:

答案 0 :(得分:0)

您的活动需要实施BottomNavigationView.OnNavigationItemSelectedListener。这可以通过在您的类名后面添加implements BottomNavigationView.OnNavigationItemSelectedListener来完成,这样就完成了,这样只要点击其中一个底部菜单项,您就可以获得点击回调。

然后您需要覆盖onNavigationItemSelected功能,因此请将以下代码添加到您的活动中。

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {

    switch (item.getItemId()) {
        case R.id.tab_1:
            handleFragmentChange(Fragment_1.newInstance());
            return true;
    }

    return false;
}

使用findViewById找到视图后,还可以在同一个活动中添加navigation.setOnNavigationItemSelectedListener(this);。这样做是为了让系统在单击底部菜单时知道您的班级正在处理事件,因此它会调用您班级中的上述功能。

return true是通知android系统需要切换标签的内容。

答案 1 :(得分:0)

如果此代码位于片段中,则需要替换

BottomNavigationView navigation = view.findViewById(R.id.navigation_bottomview);
navigation.setSelectedItemId(R.id.navigation_third_tab);

之前

...commit();

并添加getRootView(),因为您的BottomNavigationView位于主容器内-根活动

BottomNavigationView navigation = view.getRootView().findViewById(R.id.navigation_bottomview);
navigation.setSelectedItemId(R.id.navigation_third_tab);