我在我的应用程序中使用弹出菜单,点击后崩溃,给出ClassNotFound异常。 我使用了以下代码
menu=(ImageView)findViewById(R.id.menu);
menu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
PopupMenu popupMenu = new PopupMenu(HTTTPGet.this, view);
popupMenu.setOnMenuItemClickListener(HTTTPGet.this);
popupMenu.inflate(R.menu.popupmenu);
popupMenu.show();
}
});
这是onmenuitemclick方法
@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.home:
Intent home=new Intent(this,HTTTPGet.class);
startActivity(home);
return true;
case R.id.schedule:
Intent schedule=new Intent(this,Schedule.class);
startActivity(schedule);
return true;
case R.id.manual:
Intent manual=new Intent(this,Schedule.class);
startActivity(manual);
return true;
default:
return false;
}
}
点击imageview应用程序后崩溃,logcat
09-30 16:19:31.560: E/AndroidRuntime(6294): FATAL EXCEPTION: main
09-30 16:19:31.560: E/AndroidRuntime(6294): java.lang.NoClassDefFoundError: android.widget.PopupMenu
09-30 16:19:31.560: E/AndroidRuntime(6294): at com.teapoyinfotech.cvv.HTTTPGet$1.onClick(HTTTPGet.java:99)
09-30 16:19:31.560: E/AndroidRuntime(6294): at android.view.View.performClick(View.java:2538)
09-30 16:19:31.560: E/AndroidRuntime(6294): at android.view.View$PerformClick.run(View.java:9152)
09-30 16:19:31.560: E/AndroidRuntime(6294): at android.os.Handler.handleCallback(Handler.java:587)
09-30 16:19:31.560: E/AndroidRuntime(6294): at android.os.Handler.dispatchMessage(Handler.java:92)
09-30 16:19:31.560: E/AndroidRuntime(6294): at android.os.Looper.loop(Looper.java:130)
09-30 16:19:31.560: E/AndroidRuntime(6294): at android.app.ActivityThread.main(ActivityThread.java:3687)
09-30 16:19:31.560: E/AndroidRuntime(6294): at java.lang.reflect.Method.invokeNative(Native Method)
09-30 16:19:31.560: E/AndroidRuntime(6294): at java.lang.reflect.Method.invoke(Method.java:507)
09-30 16:19:31.560: E/AndroidRuntime(6294): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
09-30 16:19:31.560: E/AndroidRuntime(6294): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
09-30 16:19:31.560: E/AndroidRuntime(6294): at dalvik.system.NativeStart.main(Native Method)
我是否需要在上面的代码中添加任何内容?
答案 0 :(得分:1)
PopupMenu
。
因此,只需检查清单文件中的最低SDK版本。至少你必须设置最低SDK版本11
。
有关更多信息,请阅读文档http://developer.android.com/reference/android/widget/PopupMenu.html
答案 1 :(得分:1)
PopupMenu是在API级别11中引入的
看起来您正在使用11+编译项目,最小API小于11,并在Android版本低于11的设备上启动。
这可能会导致ClassNotFoundException
决定如下: 1)在AndroidManifest.xml中将最低API级别提高到11(因此无法在Android版本低于11的设备上启动应用程序 2)使用Android支持v7库中的PopupMenu(android.support.v7.widget.PopupMenu) 要获得此库,请参阅: http://developer.android.com/tools/support-library/setup.html
希望其中一件事能满足您的需求
答案 2 :(得分:0)
尽管在您的onmenuitemclick方法中调用intent时仅指定this
给activityname.this
。希望它有效