'Cannot resolve method registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter) in Fragment class
//here my code
//used this IntentFilter
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
//this method cannot be resolve
registerReceiver(mReceiver, filter);
Solution 1:[1]
You can do that in Fragment:
getActivity().registerReceiver(receiver, filter);
Solution 2:[2]
registerReceiver
is the method found in Context
class. Fragment
does not extend it, but the Activity
does. That's why you can use it like this:
registerReceiver.(receiver, filter);
In the activity, but you must call it on a context from the Fragment either like this:
getActivity().registerReceiver(receiver, filter);
Or even better in onAttach
@Override
public void onAttach(Context context) {
context.registerReceiver(receiver, filter);
}
Solution 3:[3]
This works for me :
getActivity().registerReceiver(receiver, filter);
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Master Disaster |
Solution 2 | Vucko |
Solution 3 | Ali Talaourar |