Android如何在点击按钮后打开选项菜单项?
我正在使用这样的菜单项。Android如何在点击按钮后打开选项菜单项?,android,menuitem,android-menu,android-optionsmenu,Android,Menuitem,Android Menu,Android Optionsmenu,我正在使用这样的菜单项。 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/menu_overflow" android:enabled="true" android:icon="@d
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_overflow"
android:enabled="true"
android:icon="@drawable/ic_menu_moreoverflow_mtrl_alpha"
android:title=""
app:showAsAction="ifRoom">
<menu>
<item
android:id="@+id/action_city"
android:icon="@drawable/ic_change_city"
android:title="Change City"
app:showAsAction="never" />
<item
android:id="@+id/action_language"
android:icon="@drawable/ic_change_language"
android:title="Change Language"
app:showAsAction="never" />
<item
android:id="@+id/action_change_theme"
android:icon="@drawable/ic_change_theme"
android:title="Change Theme"
app:showAsAction="never" />
</menu>
</item>
</menu>
但上述代码不起作用
下面是它的外观设计。
创建一个xml文件名作为主菜单。xml
然后在活动中添加以下代码:
@凌驾
公共布尔onCreateOptions菜单(菜单菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(MenuItem项){
int id=item.getItemId();
开关(id){
案例R.id.1:
Toast.makeText(getApplicationContext(),“项
选中”,Toast.LENGTH_LONG.show();
返回true;
案例R.id.2:
Toast.makeText(getApplicationContext(),“第2项
选中”,Toast.LENGTH_LONG.show();
返回true;
案例R.id.3:
Toast.makeText(getApplicationContext(),“第3项
选中”,Toast.LENGTH_LONG.show();
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
创建一个xml文件名作为主菜单。xml
然后在活动中添加以下代码:
@凌驾
公共布尔onCreateOptions菜单(菜单菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(MenuItem项){
int id=item.getItemId();
开关(id){
案例R.id.1:
Toast.makeText(getApplicationContext(),“项
选中”,Toast.LENGTH_LONG.show();
返回true;
案例R.id.2:
Toast.makeText(getApplicationContext(),“第2项
选中”,Toast.LENGTH_LONG.show();
返回true;
案例R.id.3:
Toast.makeText(getApplicationContext(),“第3项
选中”,Toast.LENGTH_LONG.show();
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
试试这个
YourActivity.this.openoptions菜单() 试试这个
YourActivity.this.openoptions菜单() 你的菜单在哪里?它在导航抽屉里还是其他视图里?你在用kotlin还是android?不。它在工具栏里面。我在用Java。但是,我知道kotlin.::OnCreateOptions菜单在哪里?它在导航抽屉或任何其他视图中吗?你在使用kotlin还是android?不。它在工具栏中。我在使用Java。但是,我知道kotlin.::onCreateOptionsMenuNo。我不想让我的xml文件变成那样。因为,它不会在标题旁边显示图标。安卓:主菜单中的图标=“@drawable/ic\u action\u accept”。xmlMy代码正在运行,但我想在单击按钮后展开“选项”菜单。否。我不想让我的xml文件变成那样。因为,它不会在标题旁边显示图标。安卓:主菜单中的图标=“@drawable/ic\u action\u accept”。xmlMy代码正在运行,但我想在单击按钮后展开“选项”菜单。请仔细阅读问题。我试过这个。它不起作用。请仔细阅读问题。我试过这个。它不起作用。
activity.openOptionsMenu();
---------
toolbar.showOverflowMenu();
---------
menu_overflow.expandActionView();
---------
menu_overflow.getSubMenu().getItem().expandActionView();
Create one xml file names as menu_main. xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="example.javatpoint.com.optionmenu.MainActivity">
<item android:id="@+id/item1"
android:title="Item 1"
android:icon="@drawable/ic_action_accept" />
<item android:id="@+id/item2"
android:title="Item 2"/>
<item android:id="@+id/item3"
android:title="Item 3"
app:showAsAction="withText"/>
</menu>
Then add these code in your Activity :
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id){
case R.id.item1:
Toast.makeText(getApplicationContext(),"Item
Selected",Toast.LENGTH_LONG).show();
return true;
case R.id.item2:
Toast.makeText(getApplicationContext(),"Item 2
Selected",Toast.LENGTH_LONG).show();
return true;
case R.id.item3:
Toast.makeText(getApplicationContext(),"Item 3
Selected",Toast.LENGTH_LONG).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}