【问题标题】:Android Fragment to add a menu to Android ActivityAndroid Fragment 向 Android Activity 添加菜单
【发布时间】:2020-03-22 16:03:14
【问题描述】:

我有一个用于登录我的应用程序的片段,该片段通过一个活动显示。如果用户成功登录,那么我需要在父活动中添加一个菜单。该怎么做??

【问题讨论】:

  • 你的意思是需要在父activity工具栏或者actionBar中添加选项菜单?
  • 是的,只有登录成功才需要添加
  • 我会给你一个答案,我想知道你是否知道如何给你的活动发送回调。
  • 我没有回电。我只是将片段从登录更改为主屏幕

标签: android android-activity menu fragment


【解决方案1】:

在 Activity 创建期间菜单会膨胀。因此,在您的情况下,您只能使用它的可见性。 这不是一个有效的代码,只是你可以理解:

class MainActivity : AppCompatActivity(), MFragment.Listener {

    ...
    var menu: Menu? = null
    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        this.menu = menu
        menuInflater.inflate(R.menu.create_order_menu, menu)
        menu?.findItem(R.id.m_item)?.apply {
            isVisible = false
        }
        return true
    }

    override fun onLoginSucceed() {
        menu?.findItem(R.id.m_item)?.apply {
            isVisible = true
        }
    }

}

MF片段

class MFragment : Fragment() {

    private var listener: Listener? = null

    interface Listener {
        fun onLoginSucceed()
    }

    override fun onAttach(context: Context) {
        super.onAttach(context)
        listener = context as Listener
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        ...

        listener?.onLoginSucceed()
    }

    companion object {
        @JvmStatic fun newInstance() = MFragment()
    }
}

【讨论】:

  • 但是我为不同类型的用户提供了不同的菜单,一旦用户登录就会解决。
  • 您可以使用groups 以编程方式显示和隐藏组。因此,您可以在 xml 中为每个用户类型创建一个组,并在登录后显示正确的组。 stackoverflow.com/questions/21587341/…
猜你喜欢
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
  • 1970-01-01
  • 2012-01-08
相关资源
最近更新 更多