Kotlin изменить заголовок пункта меню не работает - PullRequest
0 голосов
/ 28 февраля 2020
 val menuitem=menuList!!.findItem(R.id.adres)
        menuitem.setTitle("asdklzmfkldfvsas")
        this.invalidateOptionsMenu()
        Toast.makeText(this,menuitem.title.toString(),Toast.LENGTH_LONG).show()



override fun onCreateOptionsMenu(menu: Menu?): Boolean {

        getMenuInflater().inflate(R.menu.gecmissiparis, menu);
        this.menuList=menu
        return super.onCreateOptionsMenu(menu)
    }

вот мой код. в Toast он говорит, что заголовок изменен, но заголовок не изменяется, или когда я пытаюсь сделать его невидимым, он не go невидим, я беру меню. xml из другого xml, не входящего в основной поток. xml это проблема? если да, то как я могу это решить?

И это меню xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >

    <item
        android:id="@+id/itemxd"
        android:title="Item" />
    <item
        android:id="@+id/sipariscx"
        android:title="Item"

        >
        <menu>
            <item
                android:id="@+id/adres"
                android:title="czxzczxc" />
        </menu>
    </item>
    <item android:title="siparis1">
        <menu>
            <item android:title="adres1" />
        </menu>
    </item>
</menu>

NavigationView СЕКЦИЯ

<com.google.android.material.navigation.NavigationView

    android:id="@+id/oldsip"

    app:headerLayout="@layout/haderdeneme"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:menu="@menu/gecmissiparis"


    >

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Просто найдите пункт меню из меню в navigationview и обновите заголовок.

val navView = findViewById(R.id.Navviewid) as NavigationView
var menuItem = navView.menu.findItem(R.id.adres)
menuItem.title = "New Title"
1 голос
/ 28 февраля 2020

Когда вы вызываете invalidateOptionsMenu, он снова вызывает onCreateOptionsMenu, и новое меню будет воссоздано, и любые изменения, сделанные вами в меню, будут потеряны

попробуйте обновить элемент меню внутри onCreateOptionsMenu метод

var updateTitle = true
this.invalidateOptionsMenu()
Toast.makeText(this,menuitem.title.toString(),Toast.LENGTH_LONG).show()



override fun onCreateOptionsMenu(menu: Menu?): Boolean {

        getMenuInflater().inflate(R.menu.gecmissiparis, menu);
        this.menuList=menu
        if(updateTitle)
        { 
            val menuitem=menuList!!.findItem(R.id.adres)            
            menuitem.setTitle("asdklzmfkldfvsas")
            updateTitle = false
        }
        return super.onCreateOptionsMenu(menu)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...