Java can';无法在android 4.1上获取menuitem,它会崩溃
我有代码,可以获取菜单项并更改图标颜色。在安卓8.1上运行良好,但当我在安卓4.1.1上测试时,应用程序崩溃Java can';无法在android 4.1上获取menuitem,它会崩溃,java,android,drawable,Java,Android,Drawable,我有代码,可以获取菜单项并更改图标颜色。在安卓8.1上运行良好,但当我在安卓4.1.1上测试时,应用程序崩溃 Drawable drawable = menuos.getItem(1).getIcon(); if(drawable != null) { drawable.mutate(); drawable.setColorFilter(Color.BLACK,
Drawable drawable = menuos.getItem(1).getIcon();
if(drawable != null) {
drawable.mutate();
drawable.setColorFilter(Color.BLACK, PorterDuff.Mode.SRC_ATOP);
}
梅努奥斯:
Menu menuos = menu
它位于OnCreateOptions菜单中
日志:
07-28 11:20:15.794 3443-3443/com.developerfromjokela.edison E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at com.developerfromjokela.edison.MainActivity$5.onPageStarted(MainActivity.java:223)
at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:318)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
OnCreateOptions菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
menuos = menu;
return super.onCreateOptionsMenu(menu);
}
如果这是抛出NPE的行:
Drawable drawable = menuos.getItem(1).getIcon();
然后有两个选项:menuos
为空或menuos.getItem(1)
为空
因此,请在上述行之前执行此操作:
Log.i("menuos_isnull", menuos == null);
if (menuos != null) {
Log.i("Item1_isnull", menuos.getItem(1) == null);
}
看看印的是什么。
这是调试,您必须更频繁地使用它。您应该查看logcat中的所有运行时错误。你也可以在这里添加日志,让访问者了解问题所在。现在问题就在这里,你知道是什么导致了崩溃吗?@RM_HTMLKoodaaja需要完整的代码oncreateoptions菜单来检查视图是否初始化。现在的问题是,你在代码中的某一行上获得了NPE。先开始看yourself@Killer第223行转到Drawable Drawable=menuos.getItem(1.getIcon();Menuos是空的,但在android 8.1上它不是空的。如果是这种情况,那么可能是一个bug。在API 17中测试它,如果没有问题,那么你就得到了你的min-sdkI,我会试试,让你知道结果如何。首先,我将在5.1上试用它