簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM