Gridview v7 对旧 api android.support.v7.widget.Gridlayout 的支持未能实例化
Posted
技术标签:
【中文标题】Gridview v7 对旧 api android.support.v7.widget.Gridlayout 的支持未能实例化【英文标题】:Gridview v7 support for older api android.support.v7.widget.Gridlayout failed to instaniate 【发布时间】:2013-04-04 22:41:42 【问题描述】:我一直在尝试使用 v7 支持库在我的 android 项目中使用网格布局。我已经看到很多人遇到了与我相同的问题,但他们的所有修复都对我不起作用。我已经更新了java。我已经更新了最新的支持库。我已将支持包添加到构建路径。我尝试将 gridview 拖到视图上并允许 eclipse 导入包。这些工作都不是。我继续得到android.support.v7.widget.GridLayout
无法实例化。我什至创建了一个测试项目并从支持网格布局和相同的错误开始。有人有其他想法吗?以下是我寻求帮助的一些地方:
Eclipse giving an error of android.support.v7.widget.GridLayout failed to instantiate
IntelliJ and android.support.v7.widget.GridLayout
Eclipse and Android SL GridLayout not working together - "android.support.v7.widget.GridLayout could not be instantiated"
除此之外……
这是我的 activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_
android:layout_
app:alignmentMode="alignBounds"
app:columnCount="6"
app:columnOrderPreserved="false"
app:useDefaultMargins="true" >
<EditText
android:id="@+id/total"
app:layout_column="0"
app:layout_columnSpan="6"
app:layout_gravity="left"
app:layout_row="0"
android:clickable="false"
android:ems="10"
android:inputType="none|number"
android:textAlignment="textEnd"
android: >
<requestFocus />
</EditText>
<Button
android:id="@+id/Button8"
app:layout_column="1"
app:layout_row="1"
android:background="@drawable/button_light_grey"
android:minHeight="40dip"
android:minWidth="40dip"
android:onClick="numberButtonEventHandler"
android:text="8" />
<Button
android:id="@+id/Button9"
app:layout_column="2"
app:layout_row="1"
android:background="@drawable/button_light_grey"
android:minHeight="40dip"
android:minWidth="40dip"
android:onClick="numberButtonEventHandler"
android:text="9" />
<Button
android:id="@+id/Button4"
app:layout_column="0"
app:layout_row="2"
android:background="@drawable/button_light_grey"
android:minHeight="40dip"
android:minWidth="40dip"
android:onClick="numberButtonEventHandler"
android:text="4" />
<Button
android:id="@+id/Button5"
app:layout_column="1"
app:layout_row="2"
android:background="@drawable/button_light_grey"
android:minHeight="40dip"
android:minWidth="40dip"
android:onClick="numberButtonEventHandler"
android:text="5" />
<Button
android:id="@+id/Button6"
app:layout_column="2"
app:layout_row="2"
android:background="@drawable/button_light_grey"
android:minHeight="40dip"
android:minWidth="40dip"
android:onClick="numberButtonEventHandler"
android:text="6" />
<Button
android:id="@+id/ButtonMultiply"
app:layout_column="3"
app:layout_row="2"
android:background="@drawable/custom_button"
android:minHeight="40dip"
android:minWidth="40dip"
android:onClick="Multiply"
android:text="*"
android:textColor="@color/light_grey" />
<Button
android:id="@+id/Button1"
app:layout_column="0"
app:layout_row="3"
android:background="@drawable/button_light_grey"
android:minHeight="40dip"
android:minWidth="40dip"
android:onClick="numberButtonEventHandler"
android:text="1" />
<Button
android:id="@+id/Button2"
app:layout_column="1"
app:layout_row="3"
android:background="@drawable/button_light_grey"
android:minHeight="40dip"
android:minWidth="40dip"
android:onClick="numberButtonEventHandler"
android:text="2" />
<Button
android:id="@+id/Button3"
app:layout_column="2"
app:layout_row="3"
android:background="@drawable/button_light_grey"
android:minHeight="40dip"
android:minWidth="40dip"
android:onClick="numberButtonEventHandler"
android:text="3" />
<Button
android:id="@+id/ButtonMinus"
app:layout_column="3"
app:layout_row="3"
android:background="@drawable/custom_button"
android:minHeight="40dip"
android:minWidth="40dip"
android:onClick="Subtract"
android:text="-"
android:textColor="@color/light_grey" />
<Button
android:id="@+id/ButtonDivide"
app:layout_column="3"
app:layout_gravity="right"
app:layout_row="1"
app:layout_rowSpan="2"
android:background="@drawable/custom_button"
android:minHeight="40dip"
android:minWidth="40dip"
android:onClick="Divide"
android:text="/"
android:textColor="@color/light_grey" />
<Button
android:id="@+id/button0"
app:layout_column="0"
app:layout_columnSpan="2"
app:layout_row="4"
android:background="@drawable/button_light_grey"
android:minHeight="20dp"
android:minWidth="82dp"
android:onClick="numberButtonEventHandler"
android:text="0" />
<Button
android:id="@+id/buttonPoint"
app:layout_column="2"
app:layout_row="4"
android:background="@drawable/button_light_grey"
android:minHeight="20dip"
android:minWidth="40dp"
android:onClick="numberButtonEventHandler"
android:text="."
android: />
<Button
android:id="@+id/ButtonPlus"
app:layout_column="3"
app:layout_row="4"
android:background="@drawable/custom_button"
android:minHeight="40dip"
android:minWidth="40dip"
android:onClick="Add"
android:text="+"
android:textColor="@color/light_grey" />
<Button
android:id="@+id/ButtonEqueals"
app:layout_column="4"
app:layout_row="3"
app:layout_rowSpan="2"
android:background="@drawable/custom_button"
android:
android:minHeight="82dp"
android:minWidth="20dp"
android:onClick="Equeals"
android:text="="
android:textColor="@color/light_grey"
android: />
<Button
android:id="@+id/Button7"
app:layout_column="0"
app:layout_row="1"
android:background="@drawable/button_light_grey"
android:minHeight="40dip"
android:minWidth="40dip"
android:onClick="numberButtonEventHandler"
android:text="7" />
</android.support.v7.widget.GridLayout>
这是项目树的片段,显示了所有指向 v7 gridlayout 的引用库、依赖项和库:新编辑,要求删除一个引用。
这是我得到的确切例外:
java.lang.ClassNotFoundException: android.support.v7.gridlayout.R$dimen
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
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(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:422)
at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:179)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:135)
at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
at android.view.LayoutInflater.inflate(LayoutInflater.java:372)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:385)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:332)
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:440)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1545)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1302)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:1059)
at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegatePageChange(LayoutEditorDelegate.java:686)
at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.pageChange(CommonXmlEditor.java:360)
at org.eclipse.ui.part.MultiPageEditorPart$2.widgetSelected(MultiPageEditorPart.java:292)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
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:3028)
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1749)
at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:278)
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:4169)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
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:353)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
【问题讨论】:
没人有什么想法吗? 您似乎从两个不同的位置导入了 v7 库。尝试删除引用库中的那个。 @RaghavSood 我按照您的要求从构建路径中删除了其中一个引用,但我仍然遇到同样的错误。我现在已经发布了我从 eclipse 收到的确切错误。 【参考方案1】:我遇到了同样的问题,我通过将“.../android-sdks/extras/android/support/v7/gridlayout”作为“Existing Android Code Into WorkSpace”导入来修复它。
它的项目名称是“android.support.v7.widget.GridLayout”,它是一个库。然后你应该在 Project/Properties/Android/Library 面板中“添加...”它作为一个库。然后它应该工作。 希望这对您有所帮助。
下面是我的xml:
<ScrollView
xmlns:grid="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:paddingBottom="10dp" >
<android.support.v7.widget.GridLayout
android:id="@+id/gridlayout_home"
android:layout_
android:layout_
android:layout_margin="5dp"
android:paddingBottom="5dp"
grid:columnCount="4"
grid:rowCount="4" >
</android.support.v7.widget.GridLayout>
</ScrollView>
【讨论】:
我在这里缺少.widget
部分,意味着我导入了错误的项目?
这不是解决方案。 GridLayout 和 GridView 是用于完全不同事物的不同组件。【参考方案2】:
M也用这个,我用这个就像
看到这个,我已经添加了一个gridlayout,它被添加到我生成的文件中,但在你的情况下,不要在生成的文件中添加gridview,这就是你面临这个问题的原因,制作构建路径或者如果你说我会发送你是我的gridview布局,但是当我在设计文件中添加gridview然后它会自动下载并自动添加refrence时它是自动生成的,所以你再次从设计文件中添加gridview,并且gridlayout也在你生成的文件中,链接你的项目与gridviewlayout V7...
【讨论】:
如果在生成的文件夹中,不应该是自己生成的吗?我无法在那里复制 v7 网格布局,因为当我清理项目时它会被删除。 不,如果你在配置构建路径中给出路径,那么清理后它不会被删除 在Linux中查看我的代码后,我发现生成的代码中实际上有support.v7.gridview。在 Windows 中这仍然不起作用,但我认为这是 eclipse 的问题。【参考方案3】:好的,我以一种奇怪的方式解决了这个问题。另外,如果有人能给我一个解释,我会给他们赏金!我开始玩 Virtual Box,非常喜欢新的 Fedora 18。决定双启动创建一个 android 开发环境。下载了结合了 Eclipse 包的 adt。我在 Windows 中创建了一个 50GB 的分区来在操作系统之间共享文件并在那里复制我的项目。引导到 Fedora 并开始一个新的 android 项目。将我的 Windows 项目中的所有文件复制并粘贴到这个新项目中,然后.... Presto!开箱即用。无需修改构建路径或其他任何内容。我收到一个警告:[2013-04-10 07:27:45 - gridlayout_v7] WARNING: unable to write jarlist cache file /home/craig/workspace/gridlayout_v7/bin/jarlist.cache
但该项目在我的 avd 中运行没有问题。那怎么办?为什么在windows下不行,在linux下不行?
【讨论】:
【参考方案4】:尝试删除 app:useDefaultMargins="true" 或将其设为 false。
【讨论】:
【参考方案5】:我通过将 android-support-v7-gridlayout.jar 库设置为在 gridlayout_V7 项目中导出来解决了这个问题。
【讨论】:
这不是解决方案。 GridLayout 和 GridView 是用于完全不同事物的不同组件。【参考方案6】:我也遇到了同样的问题,通过将“android-support-v7-gridlayout.jar”引用添加到项目库文件夹来解决。
从路径: (安卓安装)\sdk\extras\android\support\v7\gridlayout\libs
到路径: (工作区路径)(应用程序名称)\libs
【讨论】:
这不是解决方案。 GridLayout 和 GridView 是用于完全不同事物的不同组件。以上是关于Gridview v7 对旧 api android.support.v7.widget.Gridlayout 的支持未能实例化的主要内容,如果未能解决你的问题,请参考以下文章