【问题标题】:Kotlin change menu item title doesn't workKotlin 更改菜单项标题不起作用
【发布时间】:2020-02-28 14:55:15
【问题描述】:
 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 它说标题已更改但标题文本没有更改,或者当我尝试使其不可见时它不会不可见 我从另一个不在 mainactivity.xml 中的 xml 中获取 menu.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>

导航视图部分

<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"


    >

【问题讨论】:

  • 文本的更改需要在 onCreateOptionsMenu 内部进行
  • 试过了,没有任何变化
  • 您确定R.id.adres 是您要更新的项目的 id 吗?
  • 是的,我仔细检查了我为xml编辑了帖子,你可以检查

标签: android kotlin


【解决方案1】:

只需从navigationview 的菜单中找到菜单项并更新标题即可。

val navView = findViewById(R.id.Navviewid) as NavigationView
var menuItem = navView.menu.findItem(R.id.adres)
menuItem.title = "New Title"

【讨论】:

    【解决方案2】:

    当您调用invalidateOptionsMenu 时,它会再次调用onCreateOptionsMenu,新菜单将被重新创建,您在菜单中所做的任何更改都将丢失

    尝试更新 onCreateOptionsMenu 方法中的 menuitem

    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)
        }
    

    【讨论】:

    • 我在 xml 中编辑了我的帖子我添加了主要活动 xml 的导航部分。 Toast 给出了新的标题,但屏幕没有改变
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    相关资源
    最近更新 更多