lemoncodes
lemoncodes

Reputation: 2421

Android: Eclipse xml editor error can't display UI for layouts

i have this error that won't display the Graphical Layout from my xml editor... this is the message and the stack trace Message on the Error Log on my Eclispe

activity_patient.xml: com.android.layoutlib.bridge.impl.binding.FakeAdapter cannot be cast to android.widget.BaseAdapter

Stack Trace

java.lang.ClassCastException: com.android.layoutlib.bridge.impl.binding.FakeAdapter cannot be cast to android.widget.BaseAdapter
    at android.widget.FastScroller.getSectionsFromIndexer(FastScroller.java:512)
    at android.widget.FastScroller.getThumbPositionForListPosition(FastScroller.java:633)
    at android.widget.FastScroller.onScroll(FastScroller.java:458)
    at android.widget.AbsListView.invokeOnItemScrollListener(AbsListView.java:1323)
    at android.widget.ListView.layoutChildren(ListView.java:1707)
    at android.widget.AbsListView.onLayout(AbsListView.java:2102)
    at android.view.View.layout(View.java:13754)
    at android.view.ViewGroup.layout(ViewGroup.java:4362)
    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948)
    at android.view.View.layout(View.java:13754)
    at android.view.ViewGroup.layout(ViewGroup.java:4362)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
    at android.view.View.layout(View.java:13754)
    at android.view.ViewGroup.layout(ViewGroup.java:4362)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1420)
    at android.view.View.layout(View.java:13754)
    at android.view.ViewGroup.layout(ViewGroup.java:4362)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1420)
    at android.view.View.layout(View.java:13754)
    at android.view.ViewGroup.layout(ViewGroup.java:4362)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:449)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:333)
    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:1638)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1389)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:1163)
    at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegatePageChange(LayoutEditorDelegate.java:674)
    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:1276)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1300)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1285)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1079)
    at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3023)
    at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1730)
    at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:270)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3554)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3179)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1022)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:916)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:585)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:540)
    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)

I don't know how to fix this because when i ran my emulator.. my layout runs ok.. i just can't edit it easily i have to hard code it... Any inputs would be helpful on how to fix this or does anyone of you have fixes on this issue my guess is that its on the adt plugin..

By the way im using Juno Eclipse and ADT latest version

Upvotes: 0

Views: 5314

Answers (2)

Henry
Henry

Reputation: 1

You will also get the ClassCastException if you have multiple scrolling views on one screen. For example, if you have a ListView inside a ScrollView, you will see this exception. Luckily, Eclipse underlines the problem and displays this:

The vertically scrolling ScrollView should not contain another vertically scrolling widget (ListView)

when you hover over it.

Upvotes: 0

Vinay W
Vinay W

Reputation: 10190

this is a known issue with custom layouts.

The visual layout editor only loads classes that it reads from the XML. Basically when it finds a node in the XML that isn't a default widget it asks eclipse to load the corresponding class. It is possible that the custom class loader we did doesn't actually handle the case where the loaded class requires loading another class from the project.

Here's a similar problem

here's a solution, haven't tried it myself though..

Upvotes: 1

Related Questions