I'm working at trying to get a running example of a pop up menu in Android. I have, to the best of my knowledge, all my resource XML files set up correctly, and my code doesn't seem to have any obvious errors. Can anyone see where Ive gone wrong? Here is my code:
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;
}
});
}
}
EDIT: Here is the full log cat that is shown
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)
Thanks to a clue from kEN, I have resolved this issue. I was running the app on an emulator with 2.2.3 when I needed to run it on 4.0+. Simple solution was to set up a new emulator, restart eclipse and everything worked!