首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓导航组件如何保存BottomNavigationBar片段状态

安卓导航组件如何保存BottomNavigationBar片段状态
EN

Stack Overflow用户
提问于 2019-10-07 22:25:48
回答 1查看 612关注 0票数 2

我使用了NavigationAdvancedSample中的NavigationExtensions.kt类来实现BottomNavigationBar导航。如下所示:

代码语言:javascript
复制
 bottomNavigationView = findViewById(R.id.bottom_nav)
        val navGraphIds = listOf(R.navigation.home, R.navigation.category, R.navigation.cart, R.navigation.account, R.navigation.jak)
        // Setup the bottom navigation view with a list of navigation graphs
        val controller = bottomNavigationView?.setupWithNavController(
                navGraphIds = navGraphIds,
                fragmentManager = supportFragmentManager,
                containerId = R.id.nav_host_container,
                intent = intent
        )

        // Whenever the selected controller changes, setup the action bar.
        controller?.observe(this, Observer { navController ->
            setupActionBarWithNavController(navController)
        })
        currentNavController = controlle

我尝试保存每个点击的片段状态,但我不知道如何做。所有的类和片段都是用java编写的,只有Kotlin中的main activity和NavigationExtensions。导航实现:

代码语言:javascript
复制
implementation "androidx.navigation:navigation-fragment:2.2.0-alpha03"
implementation "androidx.navigation:navigation-ui:2.2.0-alpha03"
implementation "androidx.navigation:navigation-fragment-ktx:2.2.0-alpha03"
implementation "androidx.navigation:navigation-ui-ktx:2.2.0-alpha03"

这是我的片段onCreateView方法之一:

代码语言:javascript
复制
@Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        mViewModel = ViewModelProviders.of(this).get(HomePageViewModel.class);
        binding = DataBindingUtil.inflate(inflater, R.layout.home_page_fragment, container, false);
        binding.setLifecycleOwner(this);
        mViewModel.init();
        binding.setViewModel(mViewModel);
        setHasOptionsMenu(true);
        ((MainActivity) getActivity()).homeToolbarWithImage();
        ShowMainList();
        binding.swiperefresh.setOnRefreshListener(this);
        return binding.getRoot();
    }

有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2019-12-05 15:17:18

您可以使用"FragmentPagerAdapter“来保存diff片段的状态。使用"FragmentPagerAdapter“添加您的片段。如果你不能理解java类,也不用担心。你仍然可以在你的kotlin类中直接使用它们。Kotline提供了互操作性,因为您可以在同一项目中同时使用java和kotiln类。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58271601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档