2011-01-31 12 views
5

なぜのAndroidのTextViewとnullポインタ例外

TextView test = (TextView) findViewById(R.id.testTextView); 
test.getText(); 

がNULLポインタ例外を生成していますか? idが正しいです、私のXMLレイアウトファイルでtestTextViewが正しく宣言されています。

答えて

23

有効なIDを渡す場合、findViewByIdがnullを返す唯一の理由は、間違ったコンテンツビュー(setContentView)を設定しているか、コンテンツビューをまったく設定していないことです。

+0

あなたの投稿に感謝します。私は 'onCreate'で' setContentView'を呼び出しています。 – SK9

+0

あなたはoncreateとxmlレイアウト全体を共有していただけますか? – Cristian

+0

クリーンプロジェクトは問題が何であっても修正されているようです。血まみれの地獄。 – SK9

2

おそらくsetContentViewを呼び出していません。 findViewByIdを使用すると、すでに膨らまされているビューの要素を取得できます。

また、ビューを膨らませるlayoutinflaterを使用することができますが、それはあなたが望むものはおそらくありません。

+0

投稿していただきありがとうございますが、それではありません。私は 'onCreate'で' setContentView'を呼び出しています。 – SK9

+0

ありがとうございます。しかし、それは動作していません。私は誰もが説明しようとするのをやめて、代わりに私たちが使える実用的な例を作りましょう。私は説明をテストすることはできません。私はsetcontentviewと呼ぶべきことを知らない。どのパラメータ?何も使うことがないので、私はあなたに-1を与える。コメントを停止して問題を解決してください。 –

2

TextViewが適切なXMLに設定されていますか? たとえば、カスタムXMLを読み込むダイアログを作成している場合、そのXMLから要素を取得するには、dialog.findViewById(R.id.testTextView);

と言わなければなりません。Falmarri氏によると、ビューは膨らまなければなりません。 私はあなたが新しいプロジェクトを作成することでそれを解決したと思っていますが、将来のユーザーのためにそれを言いたいと思っています。

2

私はあなたのTextViewを定義した後setContentView(..)を書かれているかもしれないと思います。これらを逆にするとうまくいくはずです。

変更:

TextView test = (TextView) findViewById(R.id.testTextView); 
. 
. 
setContetView(..) 

へ:

setContetView(..) 
. 
. 
TextView test = (TextView) findViewById(R.id.testTextView); 
0

また、あなたが2つのファイルに活動を定義したことをすることができます。例えばlayoutとlayout-v21のように、idのような情報が欠けているものがあります。すべてのアクティビティのレイアウトを確認してください