android-fragments 如何从视图页片段正确地展开操作栏的菜单

ia2d9nvy  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(168)

我有我的viewpager如下:

val pagerAdapter = ViewPagerAdapter()
viewPager2.apply { offscreenPageLimit = 2; adapter = pagerAdapter }
override fun createFragment(position: Int): Fragment = list[position].fragment

所以所有的碎片从一开始就膨胀了。
但我不知道如何或在哪里从每个片段中为我的操作栏膨胀菜单。因为如果我这样膨胀它:

override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {

        binding = FragmentGenericBinding.inflate(inflater, container, false)

        setHasOptionsMenu(true)

        return bind.root
    }

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        inflater.inflate(R.menu.menu_add, menu)
        super.onCreateOptionsMenu(menu, inflater)
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        when (item.itemId) {
            R.id.menu_add -> FragmentAddMenu().show(parentFragmentManager, "Add Menu")
        }
        return super.onOptionsItemSelected(item)
    }

override fun onResume() {
        super.onResume()
        (requireActivity() as AppCompatActivity).supportActionBar?.title = "Menú"
    }

The actionbar menu and title in the first tablayout snippet is from the last inflated fragment.

如果我在片段之间切换,它们会正确地膨胀。但它只发生在应用程序的第一个片段开始时。
我希望能够膨胀每一个菜单,一旦片段是r,esumed,但我找不到任何例子在互联网上或任何方式绕过这个问题.如果我不清理菜单上的每一个膨胀,按钮积累.
actionar是主Activity布局中的一个工具栏,如果每个片段都有一个工具栏而不添加到主Activity中会更容易一些。但如果将片段更改为包含所有内容和工具栏,这看起来很糟糕。

k5ifujac

k5ifujac1#

我刚动

setHasOptiondMenu(true)

转到onResume方法

相关问题