使用底部导航和导航组件单击按钮时切换选项卡
Switch tab on button click with Bottom Navigation and Navigation component
我有一个非常简单的应用程序,它由三个片段和一个底部导航栏组成,是使用 Android Studio 中的“新建项目 -> 底部导航 Activity”创建的。第一个 Fragment 包含一个按钮,它应该将我带到第二个 Fragment,就像点击底部导航栏的中间按钮一样。
是否有“标准”方法来做到这一点?
我试过:
- 使用导航组件的
launch(...)
,它似乎启动了带有自己的返回堆栈的片段并破坏了底部导航。
- 以不同方式使用
setSelectedItemId(...)
,这会导致异常或以不同方式破坏底部导航。
在此post, someone asks the exact same question, but it is marked as a 。我找不到答案,尤其是关于导航组件。
点击 Button
应该与用户点击底部导航中的相应项目具有相同的效果。所以你需要在 BottomNavigationView
上调用 setSelectedItemId()。这只能在显示 BottomNavigationView
.
的 Activity
中完成
一个选择是引入 shared ViewModel
和
- a
LiveData
由 Activity
观察
- 一个函数
onButtonClicked()
将由 Button
的 OnClickListener
调用,它将更新 LiveData
一旦 LiveData
观察者开火,您的 Activity
就可以调用
binding.navView.selectedItemId = R.id.navigation_dashboard
请注意,要传递有关此类事件的信息,应选择某种数据类型,这些数据类型可以在使用后失效。例如参见 [=26=]
将这段代码从你想去的地方粘贴到第二个片段
Fragment fragment = new DashboardFragment();
FragmentManager fm = getActivity().getSupportFragmentManager();
fm.beginTransaction().replace(R.id.frame_layout, fragment).commit();
更多信息click here
我有一个非常简单的应用程序,它由三个片段和一个底部导航栏组成,是使用 Android Studio 中的“新建项目 -> 底部导航 Activity”创建的。第一个 Fragment 包含一个按钮,它应该将我带到第二个 Fragment,就像点击底部导航栏的中间按钮一样。
是否有“标准”方法来做到这一点?
我试过:
- 使用导航组件的
launch(...)
,它似乎启动了带有自己的返回堆栈的片段并破坏了底部导航。 - 以不同方式使用
setSelectedItemId(...)
,这会导致异常或以不同方式破坏底部导航。
在此post, someone asks the exact same question, but it is marked as a
点击 Button
应该与用户点击底部导航中的相应项目具有相同的效果。所以你需要在 BottomNavigationView
上调用 setSelectedItemId()。这只能在显示 BottomNavigationView
.
Activity
中完成
一个选择是引入 shared ViewModel
和
- a
LiveData
由Activity
观察
- 一个函数
onButtonClicked()
将由Button
的OnClickListener
调用,它将更新LiveData
一旦 LiveData
观察者开火,您的 Activity
就可以调用
binding.navView.selectedItemId = R.id.navigation_dashboard
请注意,要传递有关此类事件的信息,应选择某种数据类型,这些数据类型可以在使用后失效。例如参见 [=26=]
将这段代码从你想去的地方粘贴到第二个片段
Fragment fragment = new DashboardFragment();
FragmentManager fm = getActivity().getSupportFragmentManager();
fm.beginTransaction().replace(R.id.frame_layout, fragment).commit();
更多信息click here