[解決済み] findViewById()はレイアウトXMLのカスタムコンポーネントに対してはnullを返し、他のコンポーネントに対しては返さない。
2023-02-14 13:24:36
質問
私は
res/layout/main.xml
にはこれらの要素やその他の要素が含まれています。
<some.package.MyCustomView android:id="@+id/foo" (some other params) />
<TextView android:id="@+id/boring" (some other params) />
私のActivityのonCreateでは、このようにしています。
setContentView(R.layout.main);
TextView boring = (TextView) findViewById(R.id.boring);
// ...find other elements...
MyCustomView foo = (MyCustomView) findViewById(R.id.foo);
if (foo == null) { Log.d(TAG, "epic fail"); }
他の要素は正常に見つかりますが
foo
はnullで戻ってきます。MyCustomViewはコンストラクタ
MyCustomView(Context c, AttributeSet a)
と
Log.d(...)
が正常に表示されます。
なぜ
foo
はヌルなのか?
どのように解決するのですか?
というのも、コンストラクタの中で
super(context)
ではなく
super(context, attrs)
.
もしidなどの属性を渡さなければ、ビューはidを持たないので、そのidを使って検索することができません :-)
関連
-
[解決済み】findViewByIDがnullを返す。
-
SAXParseException: ルート要素に続くドキュメント内のマークアップは、うまく処理されなければなりません。
-
[解決済み] 既存のカスタムテーマでXMLのアクティビティのタイトルバーを非表示にする方法
-
[解決済み] XPathによる属性の取得
-
[解決済み] 大容量ファイルを扱える軽量なXMLビューア【終了しました
-
[解決済み] ある要素のn番目のインスタンスを取得するためのXPathクエリ
-
[解決済み] XMLをRデータフレームにパースする方法
-
[解決済み] XML の二重引用符のエスケープ
-
[解決済み] XSDでelementFormDefaultは何をするのですか?
-
[解決済み] ChromeでローカルファイルのXSL変換を行うことはできますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Googles IMPORTXMLが「インポートされたコンテンツは空です」エラーを返す
-
[解決済み] XML文書でエスケープする必要がある文字は何ですか?
-
[解決済み] XMLでタグのブロックをコメントアウトするにはどうすればよいですか?
-
[解決済み] コマンドラインからXMLをきれいに印刷する方法は?
-
[解決済み] XPathによる属性の取得
-
[解決済み] Vim で一致する XML タグにジャンプする
-
[解決済み] XMLで一行だけコメントするにはどうしたらいいですか?
-
[解決済み] 有効なXMLファイルにはXML宣言が必要ですか?
-
[解決済み] XMLスキーマの要素をオプションにするには?
-
[解決済み] XSDでelementFormDefaultは何をするのですか?