Как надуть меню на панели действий слева - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть меню внутри верхней панели действий, которое позволяет изменить пароль, отредактировать его профиль и выйти из системы.Что мне нужно, так это то, что после того, как они нажали опцию «edit bio», я хочу добавить стрелку или «<» на панель действий слева, чтобы позволить пользователю опцию «вернуться назад», если они хотят выйти из редактированияпрофиль, а также скрыть правую опцию меню во время редактирования.Вот мой код для раздувания меню справа: </p>

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

    //get the actionbar selction when pressed
    override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
        R.id.userLogout -> {
            FirebaseAuth.getInstance().signOut()
            val i = Intent(context, Login::class.java)
            startActivity(i)
            true
        }
        R.id.editBio -> {
            editProfileBio()
            true
        }
        else -> super.onOptionsItemSelected(item)
    }

Я действительно хочу понять, в чем заключается процесс, как это работает.Кто-нибудь может мне помочь?Я также согласился бы просто заменить меню справа на стрелку или «<», хотя мне эта идея не очень нравится. </p>

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вам просто нужно прослушать опцию R.id.home

  1. Добавить панель инструментов в макет активности.
  2. В своем фрагменте объявите, что ему нужно перерисоватьпанель инструментов.

    setHasOptionsMenu (true);

  3. Установить панель инструментов в качестве панели действий

    private fun setActionBar() {
        val toolbar = getActivity().findViewById(R.id.tb_main_toolbar)
    
        if (toolbar != null) {
            (getActivity() as AppCompatActivity).setSupportActionBar(toolbar)
        }
        val actionBar = (getActivity() as AppCompatActivity).supportActionBar
        if (null != actionBar) {
            customizeActionBar(actionBar)
        }
    }
    
    private fun customizeActionBar(actionBar: ActionBar) {
        actionBar.setDisplayHomeAsUpEnabled(true)
        actionBar.setTitle(R.string.logout)
        actionBar.setDisplayHomeAsUpEnabled(true)
        actionbar.setDisplayShowHomeEnabled(true)
        actionBar.setHomeAsUpIndicator(R.drawable.logout)
    }
    
  4. ПереопределитьonOptionItemВыбрано и выполняйте свои функции

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        when (item.itemId) {
            android.R.id.home ->  
                FirebaseAuth.getInstance().signOut()
                val i = Intent(context, Login::class.java)
                startActivity(i)
                true
        }
        return true
    }
    
0 голосов
/ 19 сентября 2018

Как насчет этого: setDisplayHomeAsUpEnabled()

R.id.editBio -> {
            editProfileBio()
            supportActionBar?.setDisplayHomeAsUpEnabled(true)
            true
        }

Для обработки при нажатии:

override fun onBackPressed() {
        super.onBackPressed()
        // do your stuff when pressed the back Button
    }

Я бы тоже согласился с простой заменой менюсправа со стрелкой или "<", хотя <strong>мне эта идея не очень нравится .

Эта идея тоже не нравится.Включив обратно Button при нажатии editbio, вы получите доступ к текущему меню, а также будет обратный Button, так что, похоже, это идеальный способ сделать это.

...