Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在OnOptions ItemSelected中获取特定菜单项,并将其设置为SHOW\u as\u ACTION\u NEVER_Android_Kotlin_Android Optionsmenu - Fatal编程技术网

Android 在OnOptions ItemSelected中获取特定菜单项,并将其设置为SHOW\u as\u ACTION\u NEVER

Android 在OnOptions ItemSelected中获取特定菜单项,并将其设置为SHOW\u as\u ACTION\u NEVER,android,kotlin,android-optionsmenu,Android,Kotlin,Android Optionsmenu,我有一个包含4个菜单项的菜单,单击其中一个菜单项时,我想将其移动到顶部(MenuItem.SHOW\u AS\u ACTION\u ALWAYS),上一个选中的菜单应该向下移动(MenuItem.SHOW\u AS\u ACTION\u NEVER)。我已成功地将选定的一个添加到顶部,但我不知道如何将上一个选定的向下移动 我的想法是获取所有其他项并将它们设置为MenuItem.SHOW\u as\u ACTION\u NEVER。我尝试选择一个这样的项 val javaItem = find

我有一个包含4个菜单项的菜单,单击其中一个菜单项时,我想将其移动到顶部(
MenuItem.SHOW\u AS\u ACTION\u ALWAYS)
,上一个选中的菜单应该向下移动(
MenuItem.SHOW\u AS\u ACTION\u NEVER
)。我已成功地将选定的一个添加到顶部,但我不知道如何将上一个选定的向下移动

我的想法是获取所有其他项并将它们设置为
MenuItem.SHOW\u as\u ACTION\u NEVER
。我尝试选择一个这样的项

  val javaItem = findViewById<MenuItem>(R.id.javaMenuItem)
val javaItem=findviewbyd(R.id.javaMenuItem)
但它说它期待一个视野

这是我的菜单

<?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/javaMenuItem"
        android:title="@string/javaItem" />
    <item
        android:id="@+id/pythonMenuItem"
        android:title="@string/pythonItem" />

    <item
        android:id="@+id/rubyMenuItem"
        android:title="@string/rubyItem" />
    <item
        android:id="@+id/javaScriptItem"
        android:title="@string/javaScriptItem" />
</menu>

这就是我所做的

override fun onOptionsItemSelected(item: MenuItem): Boolean {
        val notSelectedTextView = findViewById<TextView>(R.id.middleTextMessageTextView);
        notSelectedTextView.visibility = View.GONE

        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    
            when (item.itemId) {
                R.id.javaMenuItem -> {
                    getDataFromApi("Java")
                    setListView();
                }
                R.id.pythonMenuItem -> {
                    getDataFromApi("Python")
                    setListView();
                }
                R.id.rubyMenuItem -> {
                    getDataFromApi("Ruby")
                    setListView();
                }
                R.id.javaScriptItem -> {
                    getDataFromApi("JavaScript")
                    setListView();
                }
            }
    
            return super.onOptionsItemSelected(item)
        }
覆盖选项ItemSelected(项:MenuItem):布尔值{
val notSelectedTextView=findViewById(R.id.middleTextMessageTextView);
notSelectedTextView.visibility=View.GONE
item.setShowAsAction(菜单项始终显示为动作);
时间(item.itemId){
R.id.javaMenuItem->{
getDataFromApi(“Java”)
setListView();
}
R.id.pythonMenuItem->{
getDataFromApi(“Python”)
setListView();
}
R.id.rubyMenuItem->{
getDataFromApi(“Ruby”)
setListView();
}
R.id.javaScriptItem->{
getDataFromApi(“JavaScript”)
setListView();
}
}
返回super.onOptionsItemSelected(项目)
}

您可以将菜单保存在本地字段中,对于每次调用
OnOptions ItemSelected()
,您可以迭代所有菜单项,并将它们设置为
MenuItem。显示为操作\u从不

假设菜单名为
R.menu.my_menu
,则将菜单保存到本地变量:

var mMenu: Menu? = null
override fun onCreateOptionsMenu(menu: Menu): Boolean {
    menuInflater.inflate(R.menu.my_menu, menu)
    mMenu = menu
    return true
}
然后迭代菜单项,将其操作设置为“从不显示为操作”,然后将单击的项设置为“始终显示为操作”

override fun onOptionsItemSelected(item: MenuItem): Boolean {
        val notSelectedTextView = findViewById<TextView>(R.id.middleTextMessageTextView);
        notSelectedTextView.visibility = View.GONE

        // iterate over menu items
        for (i in 0 until mMenu?.size()!!) {
            val menuItem: MenuItem = mMenu!!.getItem(i)
            menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER)
        }

        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    
            when (item.itemId) {
                R.id.javaMenuItem -> {
                    getDataFromApi("Java")
                    setListView();
                }
                R.id.pythonMenuItem -> {
                    getDataFromApi("Python")
                    setListView();
                }
                R.id.rubyMenuItem -> {
                    getDataFromApi("Ruby")
                    setListView();
                }
                R.id.javaScriptItem -> {
                    getDataFromApi("JavaScript")
                    setListView();
                }
            }
    
            return super.onOptionsItemSelected(item)
        } 
覆盖选项ItemSelected(项:MenuItem):布尔值{
val notSelectedTextView=findViewById(R.id.middleTextMessageTextView);
notSelectedTextView.visibility=View.GONE
//迭代菜单项
对于(在0中输入i直到mMenu?.size()!!){
val menuItem:menuItem=mMenu!!.getItem(i)
menuItem.setShowAsAction(menuItem.SHOW\u AS\u ACTION\u NEVER)
}
item.setShowAsAction(菜单项始终显示为动作);
时间(item.itemId){
R.id.javaMenuItem->{
getDataFromApi(“Java”)
setListView();
}
R.id.pythonMenuItem->{
getDataFromApi(“Python”)
setListView();
}
R.id.rubyMenuItem->{
getDataFromApi(“Ruby”)
setListView();
}
R.id.javaScriptItem->{
getDataFromApi(“JavaScript”)
setListView();
}
}
返回super.onOptionsItemSelected(项目)
}