2014-01-23 59 views
0

我想要實現的PopupMenu像谷歌打下面的應用程序是我的代碼實現PopupMenu的使用android.support.v7.appcompat

PopupMenu popup = new PopupMenu(MainActivity.this, v); 
    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 

     @Override 
     public boolean onMenuItemClick(MenuItem arg0) { 

      // TODO Auto-generated method stub 
      return false; 
     } 
    }); 
    popup.inflate(R.menu.menu_popup); 
    popup.show(); 

我已經加入appcompat7我的應用程序li​​b文件夾。下面是崩潰報告,當我在點擊鏈接

01-23 12:05:59.690: E/AndroidRuntime(14728): FATAL EXCEPTION: main 
01-23 12:05:59.690: E/AndroidRuntime(14728): java.lang.IllegalStateException: Could not execute method of the activity 
01-23 12:05:59.690: E/AndroidRuntime(14728): at android.view.View$1.onClick(View.java:3607) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at android.view.View.performClick(View.java:4212) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at android.view.View$PerformClick.run(View.java:17477) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at android.os.Handler.handleCallback(Handler.java:800) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at android.os.Handler.dispatchMessage(Handler.java:100) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at android.os.Looper.loop(Looper.java:194) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at android.app.ActivityThread.main(ActivityThread.java:5371) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at java.lang.reflect.Method.invokeNative(Native Method) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at java.lang.reflect.Method.invoke(Method.java:525) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at dalvik.system.NativeStart.main(Native Method) 
01-23 12:05:59.690: E/AndroidRuntime(14728): Caused by: java.lang.reflect.InvocationTargetException 
01-23 12:05:59.690: E/AndroidRuntime(14728): at java.lang.reflect.Method.invokeNative(Native Method) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at java.lang.reflect.Method.invoke(Method.java:525) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at android.view.View$1.onClick(View.java:3602) 
01-23 12:05:59.690: E/AndroidRuntime(14728): ... 11 more 
01-23 12:05:59.690: E/AndroidRuntime(14728): Caused by: java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$layout 
01-23 12:05:59.690: E/AndroidRuntime(14728): at android.support.v7.internal.view.menu.MenuPopupHelper.<clinit>(MenuPopupHelper.java:50) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at android.support.v7.widget.PopupMenu.<init>(PopupMenu.java:69) 
01-23 12:05:59.690: E/AndroidRuntime(14728): at com.vs2.popupmenuexample.MainActivity.showPopup(MainActivity.java:26) 
01-23 12:05:59.690: E/AndroidRuntime(14728): ... 14 more 

回答

1

你可以嘗試以下解決方案:

創建基於支持庫代碼庫項目:

  • 確保你已經下載了Android支持庫使用 SDK Manager。創建一個庫項目並確保所需的JAR 文件包含在項目的構建路徑中:
  • 選擇文件>導入。
  • 選擇現有的Android代碼進入工作區,然後單擊下一步。
  • 瀏覽到SDK安裝目錄,然後瀏覽到Support Library文件夾。例如,如果您要添加appcompat項目,請瀏覽至/ extras/android/support/v7/appcompat /。
  • 單擊完成導入項目。對於v7 appcompat項目,您現在應該看到一個名爲android-support-v7-appcompat的新項目。
  • 在新庫項目中,展開libs /文件夾,右鍵單擊每個 .jar文件,然後選擇構建路徑>添加到構建路徑。例如,在創建v7 appcompat項目時,請將 android-support-v4.jar和android-support-v7-appcompat.jar文件添加到 構建路徑中。
  • 右鍵單擊庫項目文件夾並選擇構建路徑> 配置構建路徑。
  • 在訂單和導出選項卡中,檢查剛剛添加到 生成路徑的.jar文件,以便它們可用於依賴於此庫項目的 項目。例如,appcompat項目需要您輸入 以導出android-support-v4.jar和 android-support-v7-appcompat.jar文件。
  • 取消選中Android依賴項。
  • 單擊確定完成更改。您現在有一個庫項目 您選擇的支持庫,您可以與一個或多個 應用程序項目一起使用。

庫添加到您的應用程序項目:

  • 在Project Explorer中,右鍵單擊您的項目並選擇 屬性。
  • 在對話框左側的類別面板中,選擇Android。
  • 在「庫」窗格中,單擊「添加」按鈕。
  • 選擇庫項目並單擊確定。例如,appcompat 項目應列爲android-support-v7-appcompat。
  • 在屬性窗口中,單擊確定。

來源:http://developer.android.com/tools/support-library/setup.html#libs-with-res

相關問題