2012-05-27 54 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. 在「網格佈局」目錄
  2. 添加了此項目到我的主要項目
  3. 添加了來自GridLayout的lib目錄罐子我的主要的lib目錄下創建一個庫項目項目

任何幫助將不勝感激。

+0

感謝您的努力幫助球員,但沒有任何工作。但是,終於找到了解決辦法。極其尷尬地說,我需要更新我的機器上的JAVA。道歉... – Aviral

+4

我有完全相同的問題,關閉,因爲對我來說沒有意義。 –

+0

:-)希望升級Java的解決方案也能爲您工作...... – Aviral

回答

6

將您的兼容庫更新到修訂版本8,然後按照「extras \ android \ compatibility \ v7 \ gridlayout」文件夾中的README.txt文件中的說明進行操作。

希望這對你有所幫助。

注意:因爲您在xmlns:grid =「http:// schemas中聲明前綴」grid「,所以必須使用grid:columnCount =」6「而不是android.support.v7.widget.columnCount =」6「 .android.com/APK/RES-AUTO」。

+0

+1隱藏自述文件!但是Eclipse無法從我的項目中找到GridLayout類,即我無法執行'import android.support.v7.widget.GridLayout',因爲在這裏只有三個小部件可用 - PopupMenu,SearchView,ShareActionProvider。包含GridLayout類是否需要一些必要的步驟? – faizal

+0

oops我沒有將這個支持項目導入到我的工作區中。現在工作。 – faizal

3
  1. 更新eclipse,adt(甚至到版本20預覽2),sdk管理器和支持庫。

  2. 嘗試重新啓動eclipse,看看是否有幫助。

  3. 嘗試創建一個全新的項目(低sdk用於min和target sdk,但不用於project.properties文件中指定的項目),然後在可視化編輯器中拖動gridLayout。這會自動添加所需的庫。

  4. 如果沒有什麼幫助,嘗試這個例子:http://code.google.com/p/android-playground/source/checkout

0

我嘗試了許多不同的貢獻者提供的解決方案(如重新啓動Eclipse,刪除和添加libary等)

看着這之後site,我做了以下內容:

  1. 用android-sdk替換所有庫android-support-v4.jar(希望它會是最新副本)
  2. 我在xml中評論了Gridlayout,並使用佈局編輯器拖動gridlayout。

之後,一切都適合我。我不確定哪一步是解決問題的步驟,但是嘗試沒有什麼壞處。

0

看起來你正在爲Android L做些什麼,但無論如何,在你的styles.xml中包含這一行 。

<item name="windowActionBar">false</item> 
相關問題