2012-02-27 19 views
2

「アクティビティを再開できません」RunTimeExceptionが表示され、明らかに私のbroadcastReciever(bluetoothの場合)と関係があります。 onPauseはうまくいきます。しかし、この単純なコードで何が問題になっていますか?受信者のライフサイクル - onResume()に再登録するとクラッシュする

//Class fields: 
    boolean isReceiverRegistered = false; //My flag 
    IntentFilter intentFilter = null; 

//Inside onCreate: 
     IntentFilter intentFilter = new IntentFilter(); 
     intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); 
     intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); 
    if (!isReceiverRegistered) { 
     registerReceiver(intentReceiver, intentFilter); 
     isReceiverRegistered = true; 
    } 


protected void onResume() { 
    super.onResume(); 
    if (!isReceiverRegistered) { 
     registerReceiver(intentReceiver, intentFilter); //THE CRASH STATEMENT 
     isReceiverRegistered = true; 
    } 
} 

protected void onPause() { 
    super.onPause(); 
    if (isReceiverRegistered) { 
     try { 
      unregisterReceiver(intentReceiver); 
     } catch (IllegalArgumentException e) { 
     } 
     isReceiverRegistered = false; 
    } 
} 

BroadcastReceiver intentReceiver = new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
     if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) { 
     Log.v(TAG, "connected:"+device.getName()); 
     } 
     else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) { 
     Log.v(TAG, "disconnected:"+device.getName()); 
     } 
    } 
}; 

答えて

2

in onCreateあなたはintentFilterを作成しますが、あなたのクラスフィールドintentFilterはまだnullです。あなたの作成に を試してください:

 ..... 
    intentFilter = new IntentFilter(); 
    intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); 
    intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); 
     ..... 
+0

はい!ありがとう。私はAndroid環境でjavaを学び始めています。あまりにも頻繁に私はこれらの基本的なJavaの事を忘れていますが、より高いレベルのAndroidのものについて考えるだけです。私は今、そのような間違いを「見る」ことを学ぶために、いくつかの初級Javaを練習する必要があることを認識しています。 – Tombola

関連する問題