Не удается сохранить файл android XML с помощью пользовательского компонента

StackOverflow https://stackoverflow.com/questions/5311164

Вопрос

Я создал Android XML, расположенную с некоторыми пользовательскими компонентами. Но когда я сохраняю файл XML, я получаю ошибку. Поскольку это мое кулачное время с пользовательскими компонентами (виджетами), я понятия не имею, почему я получаю эту ошибку. Это мой код XML.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_marginTop="12dp"
android:orientation="vertical"
android:background="@drawable/layout_bg">

<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_gravity="center_horizontal"
    android:paddingLeft="12dp"
    android:paddingRight="12dp"
    android:paddingTop="30dp">

  <kankan.wheel.widget.WheelView android:id="@+id/day"
        android:layout_height="wrap_content"
        android:layout_width="46dp"/>
    <kankan.wheel.widget.WheelView android:id="@+id/month"
        android:layout_height="wrap_content"
        android:layout_width="100dp"/>
    <kankan.wheel.widget.WheelView android:id="@+id/year"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"/> 


</LinearLayout>

И это ошибка, которую я получаю. Я должен сказать, что в файле r.java такого значения ресурса нет

ошибка! NotFoundException: не удалось разрешить значение ресурса: 0x7F020009.

android.content.res.resources $ notfoundexception: не может разрешить значение ресурса: 0x7f020009. at com.android.layoutlib.bridge.bridgeresources.trowexception (bridgeresources.java:546) на com.android.layoutlib.bridge.bridgeresources.getdrawable (bridgeresources.java:131) на kankan.whiele.widgeview.wheelview.initrecresces.InitReSources.IavA .java: 427) на kankan.wheel.widget.wheelview.calculatelayoutwidth (wheelview.java:482) на kankan.wheel.widget.wheelview.onmeasure (wheelview.java:518) на android.view.view.measure (View. java: 7964) at android.view.viewgroup.measurechildwithmargins (viewgroup.java:3023) at android.widget.linearlayout.measurechildbeforelayout (linearlayout.java:88) at android.widget.linearlayout.measurizontal android.widget.linearlayout.onmeasure (linearlayout.java:280) на android.view.view.measure (view.java:7964) на android.view.viewgroup.measurechildwithmargin .measurechildbeforelayout (linearlayout.java:888) на android.widget.linearlayout.measurevertical (linearlayout.java:350) на Android.wid get.linearlayout.onmeasure (linearlayout.java:278) на android.view.view.measure (view.java:7964) на android.view.viewgroup.measurechildwithmargins (viewgroup.java:3023) atroid.widget.framelayout.onmeas (Framelayout.java:245) на android.view.view.measure (view.java:7964) на com.android.layoutlib.bridge.bridge.computelayout (bridge.java:443) на com.android.ide.common. rendering.layoutlibrary.createlegacysession (layoutlibrary.java:404) на com.android.ide.common.rendering.layoutlibrary.createsession (layoutlibrary.java:285) на com.android.ide.eclipse.adt.internal.editors.layout. gle2.graphicalEditorpart.renderwithbridge (GraphicalEditorpart.java:1506) на com.android.ide.eclipse.adt.internal.editors.layout.gle2.graphicalEditorpart.renderwithbridge (graphicalEdortorpart.java:1312) у Com.android.ide.ide.ide.ide.ide.ide.ide.ide.ide.ide.ide.де. adt.internal.editors.layout.gle2.graphicalEdortorpart.recomputelayout (graphicalEditorpart.java:1043) на com.android.ide.eclipse.adt.internal.editors.layout.gle2.graphicalorpart.onxmlmodelch Anged (graphicalEdortorpart.java:1005) в com.android.ide.eclipse.adt.internal.editors.layout.layouteditor.xmlmodelchanged (LayoutEditor.java:303) на com.android.ide.eclipse.adt.internal.editors. Androidxmleditor $ xmlmodelStateListener.ModelChanged (androidxmleditor.java:1213) at org.eclipse.wst.sse.core.internal.model.abstractstructuredmodel.firemodelchanged (AbstractStructuredModel.javaSt.T. model.abstractstructuredModel.InternalModelChanged (AbstractStructuredModel.java:887) на org.eclipse.wst.sse.core.internal.model.abstractstructuredmodel.changedmodel (AbstractStructuredModel.java:382) org.eclse.wster.wstrepr document.domdelimpl.changedmodel (domdelimpl.java:167) на com.android.ide.eclipse.adt.internal.editors.androidxmleditor.wrapeditxmlmodel (androidxmleditor.java:803) на com.android.ide.ide.ide.adt.internal. editors.uimodel.uielementnode.setpropertyvalue (uilementnode.java:1885) на com.android.ide.eclipse.adt.internal.editors.layout.gle. 2. Canvasviewinfo.setPropertyValue (canvasviewinfo.java:320) на org.eclipse.ui.views.properties.propertySheetEntry.valueChanged (PropertySheetEntry.java:782) на org.eclipse.ui.view.properties.properties.properties.propertiSperte. Java: 723) на org.eclipse.ui.views.properties.propertySheetEntry.applyeditorValue (PropertyShietEntry.java:146) на org.eclipse.ui.views.properties.propertysheetentry $ 1.Applyeditorvalue (PropertyShietShietShieTEntry.java.103. eclipse.jface.viewers.celleditor $ 1.run (celleditor.java:333) по адресу org.eclipse.core.runtime.saferunner.run (saferunner.java:42) на org.eclipse.ui.internal.jfaceut $ 1.run ( Jfaceutil.java:49) на org.eclipse.jface.util.saferunnable.run (saferunnable.java:175) на org.eclipse.jface.viewers.celleditor.firepplyeditorvalu .eclipse.adt.internal.editors.ui.editabledialogcelleditor.handledefaultseletection (editabledialogcelleditor.java:264) на com.android.ide.eclipse.adt.internal.editors.ui.editabledialogcelleditor $ 1 .widgetDefaultseledicted (editabledIalogcelleditor.java:83) на org.eclipse.swt.widgets.typedlistener.handleevent (typedlistener.java:119) на org.eclipse.swt.widgets.eventtable.sendevent (Eventatable.java:84). eclipse.swt.widgets.widget.sendevent (widget.java:1053) на org.eclipse.swt.widgets.display.rundeferredevents (display.java:4066) на org.eclipse.swt.widgets.display.ReadDispatch (Display. Java: 3657) на org.eclipse.ui.internal.workbench.runeventloop (workbench.java:2640) на org.eclipse.ui.internal.workbench.runui (workbench.java:2604) на org.eclipse.ui.internal .Workbench.access $ 4 (workbench.java:2438) на org.eclipse.ui.internal.workbench $ 7.run (workbench.java:671) на org.eclipse.core.databinding.observable.realm.runwithdef (Realm.java. : 332) на org.eclipse.ui.internal.workbench.createandrunworkbench (workbench.java:664) на org.eclipse.ui.platformui.createandrunworkbench (Platformui.java:149) на org.eclipse.ui.internal.ide. Application.IdePlication.Start (IdeaPlicamation.java:115) на org.ec lipse.equinox.internal.app.eclipseapphandle.run (eclipseapphandle.java:196) на org.eclipse.core.runtime.internal.adaptor.clipseapplauncher.runapplication (eclipseapplauncher.javapplauncher.cr Internal.adaptor.eclipseapplauncher.start (eclipseapplauncher.java:79) на org.eclipse.core.runtime.adaptor.eclipsestarter.run (eclipsestarter.java:369) на org.eclipse.core.runtime.adaptor.eclipsestter.runesttrater. EclipseStarter.java:179) в sun.reflect.nativemethodaccessorimpl.invoke0 (нативный метод) на sun.reflect.nativemethodaccessorimpl.invoke (неизвестный источник) на sun.reflect.delegatingmethodaccessormpl.invoke (неизвестный источник) в java. .invoke (неизвестный источник) на org.eclipse.equinox.launcher.main.invokeframework (main.java:619) на org.eclipse.equinox.launcher.main.basicrun (main.java:574) на org.eclipse.equinoxx .launcher.main.run (main.java:1407) на org.eclipse.equinox.launcher.main.main (main.java:1383)

Пожалуйста, помогите мне разрешить эту ошибку. Заранее спасибо.

Это было полезно?

Решение

Есть ресурс, который не найден. Это может быть, например @drawable/layout_bg Вы используете?

Если это не так, взгляните на эти две линии:

initResourcesIfNecessary(WheelView.java:427) 
calculateLayoutWidth(WheelView.java:482) 

Вы звоните что -то там, что запрашивает ресурс, которого нет (идентификатор, притяжительный и т. Д.).

Другие советы

Чтобы решить эту проблему, все, что мне нужно было сделать, это удалить следующий импорт:

import kankan.wheel.R; // remove this line

который добавляется автоматически при копировании и вставке кода из образца демонстрации

Удалить линию, выделенную в этом захвате экрана

Все правильно. Пожалуйста, проверьте формат изображения для layout_bg в папке. Поддерживаемые форматы:

1.jpg 2.png 3.bmp

(например: Android принимает .jpg, а не .jpeg).

Я решил это "try-catching" доступ к ресурсам в методе

     initResourcesIfNecessary

Я понимаю, что это не идеальное решение, но, по крайней мере, теперь я могу редактировать свои макеты во время дизайна.

Модифицированный метод ниже

        private void initResourcesIfNecessary() {


    if (centerDrawable == null) {
        try {
            centerDrawable = getContext().getResources().getDrawable(R.drawable.wheel_val);
        } catch (Exception ex) {
            centerDrawable = null;
        }
    }

    if (topShadow == null) {
        try {
            topShadow = new GradientDrawable(Orientation.TOP_BOTTOM, SHADOWS_COLORS);
        } catch (Exception ex) {
            topShadow = null;
        }
    }

    if (bottomShadow == null) {
        try {
            bottomShadow = new GradientDrawable(Orientation.BOTTOM_TOP, SHADOWS_COLORS);
        } catch (Exception ex) {
            bottomShadow = null;
        }
    }
    try {
        setBackgroundResource(R.drawable.wheel_bg);
    } catch (Exception ex) {
        setBackgroundResource(0);
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top