Android開発で「Attempt to invoke virtual method 'XXX()' on null object reference」というヌルポインター例外に遭遇する。
2022-02-10 14:01:11
Android開発で発生したNull pointer exception "Nullオブジェクトの参照に対して仮想メソッド'XXX()'を呼び出そうとする" の件
最初、私のコードは次のようなものでした。
@BindView(R.id.rg_secondary)
RadioGroup rdGroup;
protected void onCreate(@Nullable Bundle savedInstanceState) {
setContentView(R.layout.yougou_home);
rdGroup.check(R.id.rg_btn1);
}
コントロールをバインドするためにbutterknifeプラグインを使用しました。エラーの意味がわからず、check()メソッドのパラメータに問題があるのではと思いました。作業は3時間くらいかかりました。
その後、正常に機能する他のjavaファイルにコードを移植したところ、ページが正常に読み込まれ、コントロールも正常に機能するようになりました。その後、エラーメッセージの意味を詳しく調べ、元のjavaファイル内のデバッグ用コードを
Log.d(TAG, rdGroup.getId()+"");
案の定、rdGroupのIdが取得できない。
そこで、butterKnife を使ってコントロールをバインドするコードを削除し、代わりに通常のメソッドを使ってコントロールをバインドしてみました。
protected void onCreate(@Nullable Bundle savedInstanceState) {
setContentView(R.layout.yougou_home);
rdGroup=this.findViewById(R.id.rg_secondary);
rdGroup.check(R.id.rg_btn1);
}
ページが正しく表示されます。
しかし、疑問が残ります。以前の開発ではbutterKnifeのバインドコントロールは問題なかったのに、なぜここではうまくいかないのでしょうか?
要約すると
エラーレポートにあるオブジェクトは、メソッドに渡されたパラメータではなく、このメソッドを呼び出したオブジェクトを指しています、これを間違えて時間を浪費するのは愚かなことです。これからも練習してどんどん間違えて経験を積んでください。
関連
-
Androidのadbデバイスがオフラインであることが判明
-
Android Studio を 3.6.3 にアップデートした後、構成 :classpath のアーティファクトをすべて解決できない。
-
AndroidStudio3.0 Error:Execution failed for task ':app:processDebugResources'.
-
Android: インポートモジュールエラー Android リソースのリンクに失敗しました
-
アンドロイドスタジオでJunitのエラー問題を解決する
-
Androidで、onTouchEventでダブルクリックを実装し、ダブルクリックイベントとして判定する方法
-
android bluetooth--Bluetooth on、検索、ペアリング、接続
-
アンドロイドの遅延実行のいくつかの方法
-
Android studio 制約レイアウト ConstraintLayout
-
adb connection appears device not found 問題が解決された
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
AAPT2エラーについて:詳しくはログをご確認ください。
-
デフォルトのアクティビティが見つからない場合の対処法
-
ジャークとして。起動アクティビティを特定できませんでした。デフォルトのアクティビティが見つかりません アクティビティ起動中のエラー
-
android E/RecyclerView﹕ アダプタが接続されていないため、レイアウトをスキップする。
-
Android のパッケージングに失敗し、Android リソースのリンクに失敗したことを示すプロンプトが表示される
-
android:EMSのプロパティ
-
アンドロイドのエリプサイズを使用する
-
Androidのカラーグラデーション実装のまとめ
-
Android TextViewは、テキスト内容が表示省略記号を超えているかどうかを判断する
-
android.viewの解決策です。