我有一个带有 4 个选项的弹出菜单:添加为朋友、邻居、同事和粉丝。我想要做的是,如果您单击“添加为朋友”,那么该选项将变为“删除朋友”。
这是我迄今为止尝试过的:
活动:
private Menu menuOpts;
public void showPopup(View v) {
Context wrapper = new ContextThemeWrapper(this, R.style.PopupPerfilAjeno);
PopupMenu popup = new PopupMenu(wrapper, v);
popup.setOnMenuItemClickListener(this);
popup.inflate(R.menu.menu);
popup.show();
menuOpts = popup.getMenu();
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_friend:
String add_as_friend = getString(R.string.add_as_friend );
if (item.getTitle().toString().equals(add_as_friend )) {
addContact(1, item);
}
else {
removeContact(1, item);
}
return true;
case R.id.add_workmate:
//
return true;
case R.id.add_neighbour:
//
return true;
case R.id.add_fan:
//
return true;
default:
return false; …Run Code Online (Sandbox Code Playgroud) 我正在尝试动态设置菜单的标题.
检索并设置如下:
ItemView menuTitle = ((ItemView) findViewById(R.id.menu_filter));
menuTitle.setTitle("TITLE_HERE");
Run Code Online (Sandbox Code Playgroud)
只要它在onOptionsItemSelected(MenuItem item)方法中就可以正常工作.
我无法找到一种方法来设置这个onPrepareOptionsMenu或onCreateOptionsMenu方法作为findViewById返回null(即使在充气菜单后).
奇怪的是,文档中似乎没有任何内容可以实现这一点,并且谷歌搜索对于这样一个看似简单的问题并没有太多关注.
我有一个菜单项,我想以编程方式更改其可见性.菜单就是这个
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/pencil"
android:orderInCategory="100"
android:showAsAction="always"
android:visible="true"
android:title="@string/for_pencil"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
然后我的代码中的一些地方
((MenuItem) findViewById(R.id. pencil)).setVisible(false);
Run Code Online (Sandbox Code Playgroud)
错误:
E/AndroidRuntime(13845): FATAL EXCEPTION: main
E/AndroidRuntime(13845): java.lang.ClassCastException: com.android.internal.view.menu.ActionMenuItemView cannot be cast to android.view.MenuItem
Run Code Online (Sandbox Code Playgroud)
任何帮助整理出来的?