2012-05-27 20 views
9

He intentado incorporar el GridLayout desde la biblioteca de soporte, pero no está funcionando. Mi objetivo build es para la versión API 10. El código XML que estoy usando es el siguiente:Eclipse dando un error de android.support.v7.widget.GridLayout no pudo crear una instancia de

<?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> 

Cuando Eclipse intenta compilar este, el error dado es: android.support.v7.widget.GridLayout no pudo crear una instancia . El seguimiento de la pila es:

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) 

Con base en el hecho de que nadie se enfrenta a este problema, sospecho que no tengo la configuración de la biblioteca v7 correctamente. Los pasos que he seguido:

  1. Crear un proyecto de biblioteca en el directorio "GridLayout"
  2. agregaron este proyecto a mi proyecto principal
  3. Agregado el frasco de la lib GridLayout al directorio lib de mi principal proyecto

Cualquier ayuda será muy apreciada.

+0

Gracias por sus esfuerzos para ayudar chicos, pero nada funcionaba. Pero finalmente encontré la solución. EXTREMADAMENTE avergonzado de decir que necesitaba actualizar el JAVA en mi máquina. Disculpas ... – Aviral

+4

tengo exactamente el mismo problema, el cierre ya que no tiene sentido para mí. –

+0

:-) Afortunadamente, la solución para actualizar Java funcionó para usted también ... – Aviral

Respuesta

6

Actualice su Biblioteca de compatibilidad a la revisión 8, luego siga las instrucciones en el archivo README.txt en la carpeta "extras \ android \ compatibility \ v7 \ gridlayout".

Espero que esto te ayude.

Notas: Debe usar grid: columnCount = "6" en lugar de android.support.v7.widget.columnCount = "6" porque declara el prefijo "grid" en xmlns: grid = "http: // schemas .android.com/apk/res-auto ".

+0

+1 para el archivo README oculto! Pero Eclipse no puede encontrar la clase GridLayout desde mi proyecto, es decir, no puedo hacer 'import android.support.v7.widget.GridLayout' porque solo hay tres widgets disponibles aquí: PopupMenu, SearchView, ShareActionProvider. ¿Se requiere algún paso previo para incluir la clase GridLayout? – faizal

+0

oops no había importado este proyecto de soporte en mi espacio de trabajo. Funciona ahora – faizal

3
  1. actualización eclipse, adt (incluso para la vista previa de la versión 20 2), administrador de SDK y la biblioteca de soporte.

  2. intente reiniciar eclipse y vea si eso ayuda.

  3. intenta crear un proyecto totalmente nuevo (con sdk bajo que se usa para el sdk mínimo y objetivo, pero no para el especificado en el archivo project.properties) y arrastre el gridLayout en el editor visual. esto agregará automáticamente la biblioteca necesaria.

  4. si nada ayuda, probar este ejemplo: http://code.google.com/p/android-playground/source/checkout

0

Intento una serie de solución aportada por diferentes colaborador (por ejemplo, reiniciar Eclipse, eliminar y añadir libary etc)

Después de mirar en este site, hice lo siguiente:

  1. Reemplazar todo la biblioteca android-apoyo-v4.jar con el androide-SDK (con la esperanza de que será el última copia)
  2. Comenté el Gridlayout en xml y uso el editor de diseño simplemente arrastro gridlayout.

Después de todo, todo me funciona. No estoy seguro de qué paso es el que lo soluciona, pero no hay nada de malo en intentarlo.

0

Parece que lo estás haciendo para Android L pero de todos modos incluye esta línea dentro de tu styles.xml.

<item name="windowActionBar">false</item> 
Cuestiones relacionadas