Android ViewPager のエラーです。NULLオブジェクトの参照で仮想メソッドxxxを呼び出そうとした
2022-02-10 10:03:23
AndroidでTabLayoutを作成し、タブをクリックすると、以下のエラーが発生します。
java.lang.NullPointerException: NULLオブジェクトの参照に対して仮想メソッド 'java.lang.Class java.lang.Object.getClass()' を呼び出そうとしました。
コード
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition()); // error line, test viewPager and tab are not empty
}
//...
});
むしろ奇妙なことに、エラーを報告する行には両方の変数が印刷されており、NULLではありません。
ネットで調べたところ、ViewPagerのAdapterに問題があることがわかりました。TabLayoutには3つのタブがあり、Adapterには2つしか定義されていないので数が合わず、エラーになるのだそうです。
//In the Activity
tabLayout.addTab(tabLayout.newTab().setText("Home"));
tabLayout.addTab(tabLayout.newTab().setText("Sport"));
tabLayout.addTab(tabLayout.newTab().setText("Movie"));
//Adapter in
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
FragHome homeFragment = new FragHome();
return homeFragment;
case 1:
FragSport sportFragment = new FragSport();
return sportFragment;
default:
return null;
}
}
解決方法は簡単で、Adapterの残りのタブを埋めるだけです。
case 0: ...
case 1: ...
case 2: ...
関連
-
ADBサーバーがACKしない ソリューション
-
Android Studio 3.1.2 新規プロジェクトのエラー AAPT2エラー:詳細はログを確認してください(Gradle 3.1.2)
-
com.android.ide.common.process.ProcessException が発生する可能性のある原因。aaptの実行に失敗したエラー(解決済み)
-
Android Handlerのメッセージングメカニズムの最も完全な説明(継続的に追加される)。
-
com.android.tools.build:gradle:3.0.0 が見つかりませんでした。
-
jniとjavaの間でbytearrayを受け渡しする
-
Android Studioの解決策:xxxは囲むクラスではありませんエラー
-
Android ProgressBarの詳しい解説とカスタマイズ方法
-
Android SpinnerのsetSelectionとonItemSelectedイベントのトリガー順について
-
INSTALL_FAILED_INVALID_APK: 分割された lib_slice_5_apk が複数回定義されている 例外
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
アプリの実行エラー。デフォルトのアクティビティが見つかりません
-
Android Studio--警告。アプリはGoogle検索でインデックスされません
-
エラーの報告です。ArrayAdapter は、リソース ID が TextView である必要があります。
-
SolutionMethod がスーパークラスのメソッドをオーバーライドしない。
-
Android用ニュースアプリの簡単な実装です。
-
Androidの内部育成に磨きをかける2年間
-
Android Studioのインポートプロジェクトが表示されます。ファイルをクランチするのに失敗しました
-
Android Studio がエラーを報告します。指定された名前に一致するリソースが見つかりませんでした
-
自作のシンプルなアンドロイド用メモ帳アプリ
-
android.content.res.Resources$NotFoundException: 文字列リソースID #0x1エラー