Android 在OnOptions ItemSelected中获取特定菜单项,并将其设置为SHOW\u as\u ACTION\u NEVER
我有一个包含4个菜单项的菜单,单击其中一个菜单项时,我想将其移动到顶部(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
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(项目)
}