1

使用したいメソッドを追加するために、ImageView のサブクラスを作成しようとしているプロジェクトがあります。私は Android のコーディングを始めてまだ 2 週間しか経っていないので、あまり経験がなく、OOP についてはまったくの初心者です。メイン プロジェクトで動作させることができなかったので、小さなテスト プロジェクトを作成しましたが、同じエラーが発生します。

まず、ImageView を拡張する新しいクラス ImageViewCustom.java を作成しました

public class ImageViewCustom extends ImageView {}

(スーパークラスからコンストラクターを追加しました)

ここを読んだ後、XMLで私はそうしました

<ImageView class="com.example.testcustomclass.ImageViewCustom" 
    android:id="@+id/imageViewCustom" ... />

これはビルドして実行するために機能しますが、 MainActivity で参照しようとすると

ImageViewCustom imageViewTest = (ImageViewCustom)
    findViewById(R.id.imageViewCustom);

私は...

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity
    ComponentInfo{com.example.testcustomclass.MainActivity}:
    java.lang.ClassCastException: android.widget.ImageView 
    cannot be cast to com.example.testcustomclass.ImageViewCustom

私は何を間違っていますか?D: これはほとんど空のプロジェクトなので、非常に基本的なものが欠けていると思います。参考までに、今夜までに課題を片付けようと思っているのですが (えっ!)、コードの重複が多すぎてサブクラスを作成したいのですが、困惑してストレスが溜まっています >_< 睡眠不足などです。

(編集、コードフォーマットの修正...)

4

2 に答える 2

3

あなたのXMLはオフです...私はいつも使用します

<com.my.project.MyView
     android:id="..."
/>

これが適切な方法だと思います。

于 2013-02-15T17:58:01.870 に答える
0

xml レイアウトでビューを参照する場合、クラスを使用する必要はありません

交換

<ImageView class="com.example.testcustomclass.ImageViewCustom" 
    android:id="@+id/imageViewCustom" ... />

<com.example.testcustomclass.ImageViewCustom
    android:id="@+id/imageViewCustom" ... />
于 2013-02-15T18:11:02.170 に答える