Bluetooth経由でデータを送受信するAndroidアプリを開発しています。
1 つのフラグメントに接続ボタンと切断ボタンがあるアクティビティと、すべての Bluetooth メソッドを含む UI を持たないフラグメントがあります。
接続ボタンが押されるとfragment.bluetoothConnect()
、接続プロセスを開始するために呼び出します。このプロセスは、ユーザーが画面を回転するまで正常に機能します。画面を回転させてから接続を開始しようとすると、null ポインター例外がスローされます。
null 例外をスローしている変数はonResume()
、Bluetooth フラグメントのメソッド中に割り当てられる 3 つです。onCreate()
それらをandに移動しようとしましたonAttach()
が、成功しませんでした。
Bluetooth フラグメント onResume メソッドには、次のコード行があります。
@Override
public void onResume() {
super.onResume();
appContext = getActivity().getApplicationContext(); //Get the activity context
btDeviceArray = new ArrayList<BluetoothDevice>();
btDeviceNames = new ArrayList<String>();
if (appContext == null)
Log.d(BTTAG,"appContext is null ");
else
Log.d(BTTAG,"appContext is not null");
}
画面が回転すると、appContext is not nul
Logcat は appContext が割り当てられたことを意味する行 "l" を出力しますが、別の方法で同じテストを実行すると、"appContext is null" が表示されます。