【问题标题】:BottomNavigation with NavController doesn't retrieve/parse arguments correctly使用 NavController 的 BottomNavigation 无法正确检索/解析参数
【发布时间】:2019-10-05 16:34:30
【问题描述】:

我在使用 BottomNavigation 和 NavigationUI 检索片段中的参数时遇到了一些问题。我在导航到 addOrderFragment(picture) 后检索空值。我不知道为什么这不起作用。

导航布局:http://prntscr.com/pf9tl1
活动布局:http://prntscr.com/pf9u4q
Activity 布局有一个 NavHost 片段,所有其他布局都在其中膨胀,并且此片段中的导航工作正常。

主要活动

  UID = getIntent().getStringExtra("UID");
    Bundle args = new Bundle();
    args.putString("UID", UID);
    //navigation
    controller = Navigation.findNavController(this, R.id.fragment_container);
    controller.setGraph(R.navigation.navigation_mainmenu, args);
    controller.navigate(R.id.mainMenuFragment, args);
    bottomNav = findViewById(R.id.bottom_navigation);
    NavigationUI.setupWithNavController(bottomNav, controller);

导航到另一个片段后从另一个片段中检索 UID

 controller = Navigation.findNavController(view);
        try {
            UID = getArguments().getString("UID"); <---gets null 
        } catch (Exception e) {
            Crashlytics.logException(e);
        }

【问题讨论】:

  • 如果你的 UID 对你的活动来说是全局的,你为什么要使用 Fragment 参数呢?片段可以自己调用requireActivity().getIntent().getStringExtra("UID")
  • @ianhanniballake 我不知道为什么。现在可以了,谢谢。

标签: android bottomnavigationview navigationcontroller


【解决方案1】:

如果您的 UID 对您的活动来说是全局的,那么您根本不应该使用 Fragment 参数。 Fragments 可以调用requireActivity().getIntent().getStringExtra("UID") 来从 Activity 中检索 extras。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多