私はAndroid開発の初心者です。私のアプリは完璧にコンパイルされています(エラーも警告もありません)が、起動時にクラッシュします。私はクラッシュの原因をNullPointerExceptionと診断しました。この宣言に応じてすべての行と同様にTextView output = (TextView) findViewById(R.id.outputbox);
を削除すると、アプリが正常に起動することがわかりました。私は研究を行いました(スタック・エクスチェンジのオン・オフ、およびGoogleの結果約5ページ)、私が見つけた解決策はありませんでした。それが私がこの質問をしている理由です。私はTextView output = (TextView) findViewById(R.id.outputbox);
とoutputbox
の前にsetContentView(R.layout.activity_main);
を実行しました。これはactivity_main.xmlで宣言されています。これは既存の質問と重複しているわけではありません。他の質問への回答が私の問題を解決しなかったからです。findViewByIdにより、明らかな理由がないためNullPointerExceptionが発生します
答えて
おそらく、変数output
の宣言と初期化がクラスにあります。これはうまくいきません。メソッドfindViewById
は、setContentView
メソッドが呼び出された後にのみ機能します。
public class MainActivity extends AppCompatActivity {
TextView output;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
output = (TextView) findViewById(R.id.outputbox)
}
}
方法findViewById
検索をXMLであなたのコンポーネントのために:あなたはクラスで自分の変数を宣言する必要がありますが、すぐにsetContentView
メソッドの後に方法onCreate
でそれを初期化する理由です。これが機能するには、このアクティビティで使用されるXMLファイルを指摘する必要があります。これはsetContentView(R.layout.activity_main);
コマンドで行われます。それは一般的な間違いですので、心配はありません:)
宣言と初期化は、クラス内の同じ行にありますが、メソッドの後にあります。なぜそれがうまくいかないのでしょうか? – person
クラス内の変数の宣言と初期化は、メソッドのANYが呼び出される前に発生します。したがって、初期化はクラスで実行される最初のコードになります。 Activity Lifecycleについて読む - アクティビティが画面上で視覚化されると、onCreateメソッドが呼び出され、次にfindViewByIdメソッドが機能します。クラス内でfindViewByIdを使用しないでください。これは、AFTER onCreate: –
というメソッドでのみ使用できます。できるだけ早くActivity Lifecycleについて読むことにします。お手伝いありがとう。 – person
- 1. 不明な理由でInvalidUseOfMatchersExceptionが発生しました
- 2. Scala NullPointerExceptionが発生しない限り
- 3. 明らかに理由がないためにポインタが変化する - C
- 4. TriggerCompleteイベントが発生しない理由
- 5. 不明な理由で404 Not Foundエラーが大量に発生しました
- 6. エラーが発生する理由:「MyBeanクラスの不明なプロパティ」
- 7. iOS上のOpusデコーダがクラッシュしていて、明らかな理由がなくなりました。
- 8. なぜNullPointerExceptionがWebViewで発生しましたか?
- 9. なぜNullPointerExceptionが発生していますか?
- 10. ループが明白な理由がないために "最後にジャンプ"しますか? Javascriptのプログラムで
- 11. バッチコードに問題があります。かっこのためにエラーが発生している理由がわからない
- 12. ライブラリーが見つからないためにエラーが発生しました。arc4random
- 13. JavaFX:明らかに理由がないため、ノードの座標が間違っています
- 14. 自己が何かに割り当てられているときにエラーが発生しない理由
- 15. ランダムな間隔でNullPointerExceptionを取得する理由がわからない
- 16. アクティビティでNullPointerExceptionが発生しました
- 17. サービスでNullpointerExceptionが発生しました
- 18. ProgressDialogでNullPointerExceptionが発生しました
- 19. RESTでNullPointerExceptionが発生しました
- 20. ArrayAdapterでnullPointerExceptionが発生しました
- 21. ArrayIndexOutofBoundsExceptionエラーが発生しましたが、理由はわかりません
- 22. ExtractMethodCodeRefactoringProviderの理由でエラーが発生し、無効になっていますか?
- 23. 基本:迅速なコードでエラーが発生しましたが、理由がわかりません
- 24. Javaプロセスが明らかな理由でぶら下がっています
- 25. "予期しないT_STRINGエラー"が発生する理由
- 26. csvで読み込み、System.FormatExceptionエラーが発生しましたが、わからない理由
- 27. boost_threadが足りないためにcmakeエラーが発生しました
- 28. なぜliferayでNullPointerExceptionが発生しますか?
- 29. Swift - レンダリング時にNSColorがより明るくなる理由
- 30. まだ実行されていないコードによって明らかにエラーが発生しました
.xmlとアクティビティコードを投稿してください。 –
.xmlコードを投稿 –
特定のシナリオで既製のソリューションを見つけることはめったにありません。重要な点は、問題を理解し解決することです。 – shmosel