要在 Android 底部导航栏中从另一个导航图调用操作,你可以使用 Jetpack Navigation 组件库提供的功能。
首先,确保你的项目中已经添加了 Navigation 组件库的依赖。在 build.gradle 文件中添加以下代码:
implementation "androidx.navigation:navigation-fragment-ktx:$version"
implementation "androidx.navigation:navigation-ui-ktx:$version"
然后,创建一个新的导航图(例如,nav_graph_call.xml),并在其中定义你要调用的操作。例如,假设你的导航图如下所示:
在这个例子中,我们创建了两个 Fragment,分别是 CallFragment 和 DetailsFragment,并在 CallFragment 中定义了一个操作 action_call_to_details
,该操作将从 CallFragment 导航到 DetailsFragment。
接下来,在你的 Activity 中,创建一个 BottomNavigationView,并设置导航图:
class MainActivity : AppCompatActivity() {
private lateinit var navController: NavController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val navView: BottomNavigationView = findViewById(R.id.nav_view)
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
navController = navHostFragment.navController
navView.setupWithNavController(navController)
}
}
这里我们使用了一个名为 nav_host_fragment
的 Fragment,用于承载导航图的 Fragment。
最后,在底部导航栏的其中一个 Fragment(例如 CallFragment)中,你可以使用以下代码来调用操作:
class CallFragment : Fragment() {
private lateinit var navController: NavController
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_call, container, false)
navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment)
val button: Button = view.findViewById(R.id.button)
button.setOnClickListener {
navController.navigate(R.id.action_call_to_details)
}
return view
}
}
这里,我们使用 Navigation.findNavController()
方法来获取活动的 NavController,然后使用 navController.navigate()
方法来调用操作 action_call_to_details
。
这样,当你点击 CallFragment 中的按钮时,就会导航到 DetailsFragment。
以上就是在 Android 底部导航栏中从另一个导航图调用操作的解决方法,希望对你有帮助!