2

いくつかのカスタムコンポーネントを使用してAndroidXMLレイアウトを作成しました。しかし、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。com.android.layoutlib.bridge.BridgeResources.throwException(BridgeResources.java:546)at com.android.layoutlib.bridge.BridgeResources.getDrawable(BridgeResources.java:131)at kankan.wheel.widget.WheelView.initResourcesIfNecessary(WheelView .java:427)at kankan.wheel.widget.WheelView.calculateLayoutWidth(WheelView.java:482)at kankan.wheel.widget.WheelView.onMeasure(WheelView.java:518)at android.view.View.measure(View。 java:7964)at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)at android.widget.LinearLayout.measureHorizo​​ntal(LinearLayout.java:619)at android.widget.LinearLayout。

このエラーを解決するのを手伝ってください。前もって感謝します。

4

4 に答える 4

2

この問題を解決するために私がしなければならなかったのは、次のインポートを削除することだけです。

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

サンプルデモからコードをコピーして貼り付けると自動的に追加されます

この画面で強調表示されている行を削除します。

于 2012-11-15T20:03:50.583 に答える
1

見つからないリソースがあります。それは例えば@drawable/layout_bgあなたが使っているのかもしれませんか?

そうでない場合は、次の2行を見てください。

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

そこにないリソース(ID、ドローアブルなど)を要求している何かを呼び出しています。

于 2011-03-15T11:54:44.160 に答える
1

すべてが正しい。ドローアブルフォルダ内のlayout_bgの画像形式を確認してください。サポートされている形式:

1.jpg 2.png 3.bmp

(例:Androidは.jpegではなく.jpgを受け入れます)。

于 2011-03-15T13:55:50.263 に答える
0

"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);
    }
}
于 2012-09-17T13:41:51.220 に答える