2014-01-23 2 views
0

Я хочу реализовать PopupMenu как в Google Play приложение ниже мой кодРеализация 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 к моей приложения Lib папки. Ниже приводится отчет о аварии, когда я нажимаю на кнопку

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 . Создайте проект библиотеки и убедитесь, что необходимые файлы JAR включены в путь построения проекта:
  • Выберите «Файл»> «Импорт».
  • Выберите существующий код для Android в рабочее пространство и нажмите «Далее».
  • Просмотрите каталог установки SDK, а затем в папку с библиотекой поддержки. Например, если вы добавляете проект appcompat, перейдите в/extras/android/support/v7/appcompat /.
  • Нажмите «Готово», чтобы импортировать проект. Для проекта v7 appcompat вы должны увидеть новый проект под названием android-support-v7-appcompat.
  • В новом проекте библиотеки разверните папку libs /, щелкните правой кнопкой мыши каждый файл .jar и выберите «Путь сборки»> «Добавить в путь сборки». Например, при создании проекта appcompat v7 добавьте файлы android-support-v4.jar и android-support-v7-appcompat.jar для файлов в файл пути сборки.
  • Щелкните правой кнопкой мыши папку проекта библиотеки и выберите «Путь сборки»> Настроить путь сборки.
  • На вкладке «Заказ и экспорт» проверьте файлы .jar, которые вы только что добавили в , путь сборки, поэтому они доступны для проектов, которые зависят от проекта библиотеки . Например, для проекта appcompat требуется для экспорта файлов android-support-v4.jar и android-support-v7-appcompat.jar.
  • Снимите флажки с Android.
  • Нажмите OK, чтобы выполнить изменения. Теперь у вас есть проект библиотеки для вашей выбранной Библиотеки поддержки, которую вы можете использовать с одним или несколькими проектами приложений .

Добавить библиотеку в проект приложения:

  • В окне Project Explorer, щелкните правой кнопкой мыши проект и выберите Свойства .
  • В панели категорий в левой части диалогового окна выберите Android.
  • В панели «Библиотека» нажмите кнопку «Добавить».
  • Выберите проект библиотеки и нажмите OK. Например, проект appcompat должен быть указан как поддержка android-support-v7-appcompat.
  • В окне свойств нажмите кнопку ОК.

Источник: http://developer.android.com/tools/support-library/setup.html#libs-with-res

Смежные вопросы