片段内的 setSupportActionBar

Posted

技术标签:

【中文标题】片段内的 setSupportActionBar【英文标题】:setSupportActionBar inside of a Fragment 【发布时间】:2018-10-30 08:11:30 【问题描述】:

我有一个片段:

class HomeFragment : Fragment()  ... 

现在我正在尝试向其添加操作栏,但这不起作用:

setSupportActionBar(findViewById(R.id.toolbar_main))

如何设置 Support,然后将 Items 添加到 ActionBar?

这是它在 AppCompatActivity 中的工作方式:

//    This adds items to the ActionBar
    override fun onCreateOptionsMenu(menu: Menu): Boolean 
        menuInflater.inflate(R.menu.menu_toolbar_main, menu)
        return true
    


//    This is the OnClickListener for the Buttons in the ActionBar
    override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) 
    R.id.toolbar_edit -> 


        true
    

    R.id.toolbar_search -> 


        true
    

    else -> 
        // If we got here, the user's action was not recognized.
        // Invoke the superclass to handle it.
        super.onOptionsItemSelected(item)
    

提前致谢!

【问题讨论】:

【参考方案1】:

在你的Fragment 中覆盖onCreateOptionsMenu 并在你的menu 内部膨胀。比在FragmentonCreate 方法中将setHasOptionsMenu() 设置为true。首先根据Fragment创建clear菜单来膨胀不同的菜单。

override fun onCreate(savedInstanceState: Bundle?) 
    super.onCreate(savedInstanceState)
    setHasOptionsMenu(true)


override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) 
    super.onCreateOptionsMenu(menu, inflater)
    inflater?.inflate(Your menu here, menu)

【讨论】:

但是如果我尝试在 Fragment 中充气,它会说 menuInflater 有一个未解析的引用。你能举个例子告诉我怎么做吗?

以上是关于片段内的 setSupportActionBar的主要内容,如果未能解决你的问题,请参考以下文章

用活动组内的另一个片段替换片段

片段内的片段不能与 ScrollView 一起使用

如何在 Kotlin 片段内的按钮之间切换片段?

片段内的 onCreateOptionsMenu

Android:导航抽屉片段内的Viewpager

Android Jetpack导航,另一个主机片段内的主机片段