[英]How do I fix NoClassDefFoundError in Android for android.widget.PopupMenu?
[英]Trouble with android.widget.PopUpMenu
我正在嘗試獲取一個正在運行的Android彈出菜單示例。 據我所知,我所有的資源XML文件都已正確設置,並且我的代碼似乎沒有任何明顯的錯誤。 誰能看到我錯了? 這是我的代碼:
package com.damian.popupmenu;
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.PopupMenu;
public class MainActivity extends Activity{
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Button that acts as the view element for the pop up menu //
final Button btn=(Button)findViewById(R.id.popupMenuBtn);
// Creating a new instance of pop up menu //
final PopupMenu popupMenu=new PopupMenu(this, btn);
// inflate the menu using the resource in res/menu //
popupMenu.inflate(R.menu.pop_menu);
// calling show() on the menu to display when the button is clicked //
btn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
popupMenu.show();
}
});
// Handling menu item clicks //
popupMenu.setOnMenuItemClickListener(
new PopupMenu.OnMenuItemClickListener(){
@Override
public boolean onMenuItemClick(MenuItem item){
switch(item.getItemId()){
case R.id.menu_red:btn.setBackgroundResource(R.color.LightRed);break;
case R.id.menu_green:btn.setBackgroundResource(R.color.LightGreen);break;
case R.id.menu_blue:btn.setBackgroundResource(R.color.DullBlue);break;
}
return true;
}
});
}
}
編輯:這是顯示完整日志貓
04-28 11:51:53.102: E/dalvikvm(514): Could not find class 'android.widget.PopupMenu', referenced from method com.damian.popupmenu.MainActivity.onCreate
04-28 11:51:53.102: W/dalvikvm(514): VFY: unable to resolve new-instance 986 (Landroid/widget/PopupMenu;) in Lcom/damian/popupmenu/MainActivity;
04-28 11:51:53.102: D/dalvikvm(514): VFY: replacing opcode 0x22 at 0x0012
04-28 11:51:53.102: D/dalvikvm(514): VFY: dead code 0x0014-002c in Lcom/damian/popupmenu/MainActivity;.onCreate (Landroid/os/Bundle;)V
04-28 11:51:53.142: D/AndroidRuntime(514): Shutting down VM
04-28 11:51:53.142: W/dalvikvm(514): threadid=1: thread exiting with uncaught exception (group=0x40015560)
04-28 11:51:53.153: E/AndroidRuntime(514): FATAL EXCEPTION: main
04-28 11:51:53.153: E/AndroidRuntime(514): java.lang.NoClassDefFoundError: android.widget.PopupMenu
04-28 11:51:53.153: E/AndroidRuntime(514): at com.damian.popupmenu.MainActivity.onCreate(MainActivity.java:25)
04-28 11:51:53.153: E/AndroidRuntime(514): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-28 11:51:53.153: E/AndroidRuntime(514): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
04-28 11:51:53.153: E/AndroidRuntime(514): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
04-28 11:51:53.153: E/AndroidRuntime(514): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-28 11:51:53.153: E/AndroidRuntime(514): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
04-28 11:51:53.153: E/AndroidRuntime(514): at android.os.Handler.dispatchMessage(Handler.java:99)
04-28 11:51:53.153: E/AndroidRuntime(514): at android.os.Looper.loop(Looper.java:123)
04-28 11:51:53.153: E/AndroidRuntime(514): at android.app.ActivityThread.main(ActivityThread.java:3683)
04-28 11:51:53.153: E/AndroidRuntime(514): at java.lang.reflect.Method.invokeNative(Native Method)
04-28 11:51:53.153: E/AndroidRuntime(514): at java.lang.reflect.Method.invoke(Method.java:507)
04-28 11:51:53.153: E/AndroidRuntime(514): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-28 11:51:53.153: E/AndroidRuntime(514): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-28 11:51:53.153: E/AndroidRuntime(514): at dalvik.system.NativeStart.main(Native Method)
感謝kEN的一個線索,我已經解決了這個問題。 當我需要在4.0+上運行它時,我正在2.2.3的模擬器上運行該應用程序。 一個簡單的解決方案是設置一個新的模擬器,重新啟動eclipse,一切正常!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.