2012-05-27 3 views
9

Я попытался включить GridLayout из библиотеки поддержки, но он не работает. Моя цель сборки для API версии 10. Код XML Я использую показано ниже:Eclipse дает ошибку android.support.v7.widget.GridLayout не удалось создать экземпляр

<?xml version="1.0" encoding="UTF-8"?> 
    <android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:grid="http://schemas.android.com/apk/res-auto"  
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android.support.v7.widget.columnCount="6" > 
<Button 
    android:id="@+id/button1" 
    android.support.v7.widget.layout_column="1" 
    android.support.v7.widget.layout_columnSpan="2" 
    android.support.v7.widget.layout_gravity="left" 
    android.support.v7.widget.layout_row="1" 
    android:text="Button" /> 

</android.support.v7.widget.GridLayout> 

Когда Eclipse, пытается собрать это, выдаваемая ошибка является: android.support.v7.widget.GridLayout не удалось создать экземпляр , Трассировка стека является:

java.lang.NoClassDefFoundError: android/support/v7/gridlayout/R$dimen 
at android.support.v7.widget.GridLayout.<init>(GridLayout.java:255) 
at android.support.v7.widget.GridLayout.<init>(GridLayout.java:274) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:402) 
at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:166) 
at com.android.layoutlib.bridge.android.BridgeInflater.loadCustomView(BridgeInflater.java:205) 
at com.android.layoutlib.bridge.android.BridgeInflater.createViewFromTag(BridgeInflater.java:133) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:386) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:296) 
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:279) 
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:318) 
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:372) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1361) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1115) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:941) 
at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegatePageChange(LayoutEditorDelegate.java:585) 
at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.pageChange(CommonXmlEditor.java:360) 
at org.eclipse.ui.part.MultiPageEditorPart$2.widgetSelected(MultiPageEditorPart.java:290) 
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:240) 
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062) 
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:774) 
at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:2746) 
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1433) 
at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:257) 
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) 
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754) 
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701) 
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665) 
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499) 
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679) 
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) 
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668) 
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123) 
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) 
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) 
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) 
at org.eclipse.equinox.launcher.Main.run(Main.java:1410) 

Исходя из того, что никто не сталкивается с этой проблемой, я подозреваю, что у меня нет настройки библиотеки v7 правильно. Шаги я следовал:

  1. Создать проект библиотеки в «GridLayout» каталоге
  2. Добавлена ​​этот проект в мой главный проект
  3. Добавлена ​​баночка из GridLayout Lib каталога в Lib каталога моих основных проект

Любая помощь будет очень признательна.

+0

Спасибо за ваши усилия, чтобы помочь парням, но ничего не работало. Но, наконец, нашел решение. Чрезвычайно смущаюсь сказать, что мне нужно обновить JAVA на моей машине. Извинения ... – Aviral

+4

У меня точно такая же проблема, закрытие как не имеет смысла для меня. –

+0

:-) Надеюсь, решение для обновления Java сработало для вас также ... – Aviral

ответ

6

Обновите свою библиотеку совместимости до версии 8, затем следуйте инструкциям в файле README.txt в папке «extras \ android \ compatible \ v7 \ gridlayout».

Надеюсь, это поможет вам.

Примечания: Вы должны использовать сетку: columnCount = "6" вместо android.support.v7.widget.columnCount = "6", потому что вы объявляете префикс "grid" в xmlns: grid = "http: // schemas .android.com/APK/Рез-авто».

+0

+1 для скрытого README! Но Eclipse не может найти класс GridLayout из моего проекта, то есть я не могу выполнить 'import android.support.v7.widget.GridLayout', потому что здесь доступны только три виджета - PopupMenu, SearchView, ShareActionProvider. Есть ли какой-то предварительный шаг, необходимый для включения класса GridLayout? – faizal

+0

oops Я не импортировал этот проект поддержки в свое рабочее пространство. Работает сейчас. – faizal

3
  1. обновить eclipse, adt (даже до версии 20 preview 2), sdk manager и библиотеку поддержки.

  2. попытаться перезапустить затмение и посмотреть, поможет ли это.

  3. попытайтесь создать совершенно новый проект (с низким sdk, используемым для min и target sdk, но не для одного, указанного в файле project.properties) и перетащите gridLayout в визуальный редактор. это автоматически добавит необходимую библиотеку.

  4. , если ничего не помогает, попробуйте этот пример: http://code.google.com/p/android-playground/source/checkout

0

я попробовать ряд решения, предоставляемые различными вкладчиком (например, перезапустить Eclipse,, удаление и добавление libary и т.д.)

После просмотра этого site, я сделал следующее:

  1. Заменить все библиотеки андроид-поддержку-v4.jar с андроидом-SDK (в надежде, что это будет последняя копия)
  2. Я прокомментировал Gridlayout в xml и использовал редактор макетов, просто перетащите gridlayout.

После этого все работает для меня. Я не уверен, какой именно шаг исправит, но нет никакого вреда.

0

Кажется, что вы делаете для Android L, но в любом случае включите эту строку в свои стили.xml.

<item name="windowActionBar">false</item> 
Смежные вопросы