简体   繁体   中英

Android: How to use LocalBroadcastManager

I was trying to find answer how to use LocalBroadcastManager in class that extends BaseAdapter but after hours spent by doing research how to do it I didn't find right answer. I need to call method from Fragment inside my adapter, but I don't know how to do it. Can someone explain me how should I do it? Thank you for response and help.

I can only answer about LocalBroadcastManager.

  1. Add support library to your SDK and then to your Android project.
  2. Obviously, import the support library in your java class, etc.
  3. Declare your LocalBroadcastManager and instance it. Also, you can declare it static and use it throughout your (entire) app. So you don't have to instance a new one for every activity, etc.

     public static LocalBroadcastManager mBroadcaster; mBroadcaster = LocalBroadcastManager.getInstance(yourAppContextHere); 
  4. In every activity, service, etc, register and unregister a Receiver according to each's lifecycle. Each receiver can have different filters. For example in onResume (or onCreate) and onPause (or onDestroy)::

     IntentFilter mFilter = new IntentFilter(MY_ACTION_1); mFilter.addAction(MY_ACTION_2); mBroadcaster.registerReceiver(localBluetoothReceiver, mFilter); mBroadcaster.unregisterReceiver(localBluetoothReceiver); 

    And, finally, sending broadcasts and receiving with the receiver:

     Intent sendCmdIntent = new Intent("your.package.name.your.action.name"); sendCmdIntent.putExtra(key, value); mBroadcaster.sendBroadcast(sendCmdIntent); private BroadcastReceiver localBluetoothReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Do whatever depending on the action and on the extra stuff you put in the intent. 

All this is quoted from memory, feel free to edit it!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM