2011-11-11 10 views
2

XMLでカスタムビューを宣言で宣言され、完全にカスタムビューをカスタムクラスのビューを宣言、または宣言の違いは何ですか?カスタムビューは、XML

私はのEditTextのサブクラスを作成し、MYVIEWにアクセスしようとしたとき、私の活動にClassCastExceptionでクラッシュView class=".."としてそれをinstatiatingときました:

(MyView) myView = (MyView) findViewById(R.id.myView); 

第二の選択肢として宣言すると予想されるように、すべてが動作します。

答えて

0

私は100%これについては確信していませんが、私はそれを行ってみましょう。いくつかのことが起こっている可能性があります。パーサーは、class属性を正しく理解していない可能性があります(スタイルシートの一部であると考えられているなど)。パーサーがクラスの属性をどのように処理するかはわかりません。なぜなら、実際にはそれを見たり使用したりしていないからです(実際には<View>というタグも使われていません)。ただし、パーサがViewpackageName.myViewクラスにダウンキャストしようとしています。ダウンキャストは常に危険です(アップキャストは常に安全です)。

何が起きていても、<View>タグを使用する代わりに、リストされた2番目のオプション<packageName.myView android:id...>を使用します。理由は、<View>タグを使用するのは冗長です。このXMLファイル内のすべてがビューでなければなりません(LinearLayout、Button、TextViewなどはすべてViewクラスの子孫です)。

希望に役立ちます。あなたが本当に興味があるのであれば、パーサのソースコードをダウンロードすることができます。

+0

答えに感謝します。私はいつも第二の意見を使用して終了しましたが、Androidのdocsはどちらを使用するかは問題ではないと言います。 – Maggie

関連する問題