2012-05-27 81 views
9

Tôi đã cố gắng kết hợp GridLayout từ thư viện hỗ trợ, nhưng nó không hoạt động. mục tiêu xây dựng của tôi là dành cho phiên bản API 10 mã XML Tôi đang sử dụng được hiển thị dưới đây:Eclipse đưa ra lỗi android.support.v7.widget.GridLayout không thể khởi tạo

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

Khi Eclipse cố gắng để biên dịch này, sai số nhất định là: android.support.v7.widget.GridLayout thất bại trong việc nhanh chóng . Theo dõi ngăn xếp là:

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) 

Dựa trên thực tế là không ai đối mặt với vấn đề này, tôi nghi ngờ rằng tôi chưa thiết lập đúng thư viện v7. Các bước tôi đã theo:

  1. Tạo một dự án thư viện tại "GridLayout" thư mục
  2. Added dự án này đến dự án chính của tôi
  3. Added jar từ thư mục lib GridLayout vào thư mục lib của chính tôi dự án

Bất kỳ trợ giúp nào cũng sẽ được đánh giá cao.

+0

Cảm ơn bạn đã giúp đỡ mọi người, nhưng không có gì hiệu quả. Nhưng, cuối cùng đã tìm ra giải pháp. Cực kỳ xấu hổ khi nói rằng tôi cần cập nhật JAVA trên máy tính của mình. Xin lỗi ... – Aviral

+4

tôi có chính xác cùng một vấn đề, việc đóng cửa không có ý nghĩa đối với tôi. –

+0

:-) Hy vọng rằng, giải pháp nâng cấp Java đã làm việc cho bạn ... – Aviral

Trả lời

6

Cập nhật Thư viện tương thích của bạn thành bản sửa đổi 8, sau đó làm theo hướng dẫn trong tệp README.txt trong thư mục "extras \ android \ compatibility \ v7 \ gridlayout".

Hy vọng điều này sẽ giúp bạn.

Lưu ý: Bạn phải sử dụng lưới: columnCount = "6" thay vì android.support.v7.widget.columnCount = "6" vì bạn khai báo tiền tố "lưới" trong xmlns: grid = "http: // schemas .android.com/apk/res-auto ".

+0

+1 cho README ẩn! Nhưng Eclipse không thể tìm thấy lớp GridLayout từ bên trong dự án của tôi, tức là tôi không thể thực hiện 'import android.support.v7.widget.GridLayout' vì chỉ có ba widget có sẵn ở đây - PopupMenu, SearchView, ShareActionProvider. Có một số bước cần thiết để yêu cầu bao gồm lớp GridLayout không? – faizal

+0

Tôi đã không nhập dự án hỗ trợ này vào không gian làm việc của mình. Hoạt động ngay bây giờ. – faizal

3
  1. cập nhật eclipse, adt (thậm chí đến phiên bản 20 xem trước 2), quản lý sdk và thư viện hỗ trợ.

  2. cố gắng khởi động lại nhật thực và xem điều đó có hữu ích không.

  3. cố gắng tạo một dự án hoàn toàn mới (với sdk thấp được sử dụng cho min và sdk mục tiêu, nhưng không dành cho tệp được chỉ định trên tệp project.properties) và kéo gridLayout trong trình chỉnh sửa trực quan. điều này sẽ tự động thêm thư viện cần thiết.

  4. nếu không có gì giúp, hãy thử ví dụ này: http://code.google.com/p/android-playground/source/checkout

0

tôi thử một số giải pháp được cung cấp bởi người đóng góp khác nhau (ví dụ như khởi động lại Eclipse, loại bỏ và thêm THƯ VIỆN vv)

Sau khi xem xét này site, tôi đã làm như sau:

  1. Thay thế tất cả thư viện android-support-v4.jar bằng android-sdk (hy vọng rằng nó sẽ là bản sao mới nhất)
  2. Tôi đã nhận xét Gridlayout trong xml và sử dụng trình chỉnh sửa bố cục chỉ cần kéo gridlayout.

Sau đó mọi thứ phù hợp với tôi. Tôi không chắc chắn bước nào là bước khắc phục nhưng không có hại gì.

0

Có vẻ như bạn đang làm cho Android L nhưng dù sao bao gồm dòng này bên trong styles.xml của bạn.

<item name="windowActionBar">false</item> 
Các vấn đề liên quan