0

ImageViewカスタムを xml レイアウトに追加したいと思います。

main.xml :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.android.gag.TouchImageView
        android:id="@+id/Image1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:adjustViewBounds="true"
        android:clickable="true"
        android:scaleType="center" />

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />

</RelativeLayout>

TouchImageView、その名前が示すようにextendsImageViewクラス。

Main.java

touchImageView = (TouchImageView)findViewById(R.id.Image1);

アプリがクラッシュします。Logcat の出力:

10-16 20:38:20.275: E/AndroidRuntime(11354): FATAL EXCEPTION: main
10-16 20:38:20.275: E/AndroidRuntime(11354): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.gag/com.android.gag.Main}: android.view.InflateException: Binary XML file line #6: Error inflating class com.android.gag.TouchImageView
10-16 20:38:20.275: E/AndroidRuntime(11354):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970)
idRuntime(11354): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class com.android.gag.TouchImageView
10-16 20:38:20.275: E/AndroidRuntime(11354):    at android.view.LayoutInflater.createView(LayoutInflater.java:589)
10-16 20:38:20.275: E/AndroidRuntime(11354):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)

お願いします、誰か助けてくれませんか?私は初心者なので、「「クラス ライブラリ」を「Android ライブラリ プロジェクト」に置き換えてください」などの回答は、あまりにも漠然としていて、どこから始めてどこに行けばいいのかわからないため、意味がありません。

編集:私のTouchImageView クラスへのリンク

4

1 に答える 1

2

カスタム View クラスのコードに 2 つのコンストラクターがありません。View クラスの Android ドキュメントから:

View(Context context, AttributeSet attrs)

XML からビューをインフレートするときに呼び出されるコンストラクター。

View(Context context, AttributeSet attrs, int defStyle)

XML からインフレーションを実行し、クラス固有の基本スタイルを適用します。

必要なコンストラクターが見つからないためにクラッシュしているため、ビューを膨らませることができません。

TouchImageView クラスにこれらの両方のコンストラクターを実装し、問題が解決するかどうかを確認します。

于 2012-10-16T18:30:42.807 に答える