Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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 在oncreate或onresume中获取菜单项_Android_Menuitem - Fatal编程技术网

Android 在oncreate或onresume中获取菜单项

Android 在oncreate或onresume中获取菜单项,android,menuitem,Android,Menuitem,我需要禁用特定功能上的菜单项,我已尝试使用一些代码,如: public class ExampleActivity extends AppCompatActivity Menu menu; 然后分配给这里 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); this.menu = menu; return t

我需要禁用特定功能上的菜单项,我已尝试使用一些代码,如:

public class ExampleActivity extends AppCompatActivity
    Menu menu;
然后分配给这里

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    this.menu = menu;
    return true;
}
然后稍后使用指定的菜单对象来获取所需的项

menu.findItem(R.id.avviapc).setEnabled(false);
或:

但我总是会崩溃:

java.lang.IndexOutOfBoundsException: Index: 2131296295, Size: 3
                      at java.util.ArrayList.get(ArrayList.java:411)
                      at android.support.v7.view.menu.MenuBuilder.getItem(MenuBuilder.java:741)
或:

我调用:
menu.findItem(R.id.avviapc).setEnabled(false)onCreate或onResume

如果在活动开始后2/3秒后调用,则使用手动按钮启动代码。

MenuItem.getItem(index)获取菜单项的索引。如果要使用id引用项目,请使用MenuItem.findItem:

avviopc=menu.findItem(R.id.avviapc)//项目id


avviopc=menu.getItem(indexofaviopc)//项目索引

onCreateOptions菜单
中调用您的方法以解决索引错误:

avviopc= menu.findItem(R.id.avviapc); // Do not use  getItem(position)
但是如果您也知道菜单项的位置,让我们假设它们是三个,您想要第三个,然后:

avviopc = menu.getItem(2);
说明:

getItem(int)
需要该菜单项的位置。


findItem(int)
需要菜单项的资源
id

在oncreate和onresume=)之后调用菜单。

问题不在于此,正如您从代码中看到的那样,我使用不同的替代方案,问题总是一样的:尝试调用接口方法“android.view.MenuItem android.view.menu.findItem(int)'在空对象引用上当菜单已膨胀时,任何内容都不会为空。试着去别的地方看看。我相信可能在某个地方出现了错误。菜单总是下一个oncreate和onresume,但我调用onresume中的菜单,它是空的。。。你当时不明白这个问题。07-18 18:29:21.629 20183-20183/?I/onCreate:07-18 18:29:21.719 20183-20183/?I/onStart:07-18 18:29:21.719 20183-20183/?I/ON简历:07-18 18:29:21.739 20183-20183/?I/OnCreateOptions菜单:数组
IndexOutOfBoundsException
我确信这就是它的调用方式问题不是这样的,从代码中可以看出,我使用不同的替代方案,问题总是一样的:尝试在空对象引用上调用接口方法“android.view.MenuItem android.view.Menu.findItem(int)”
avviopc= menu.findItem(R.id.avviapc); // Do not use  getItem(position)
avviopc = menu.getItem(2);