5

我试图找到答案如何LocalBroadcastManager在扩展的课堂上使用,BaseAdapter但在花费数小时研究如何做到这一点后,我没有找到正确的答案。我需要从Fragment适配器内部调用方法,但我不知道该怎么做。有人可以解释我该怎么做吗?感谢您的回复和帮助。

4

1 回答 1

6

我只能回答有关 LocalBroadcastManager 的问题。

  1. 将支持库添加到您的 SDK,然后添加到您的 Android 项目。
  2. 显然,在你的java类等中导入支持库。
  3. 声明你的 LocalBroadcastManager 并实例化它。此外,您可以将其声明为静态并在整个(整个)应用程序中使用它。所以你不必为每个活动都实例化一个新的,等等。

    public static LocalBroadcastManager mBroadcaster;
    mBroadcaster = LocalBroadcastManager.getInstance(yourAppContextHere);
    
  4. 在每个活动、服务等中,根据每个活动的生命周期注册和取消注册一个接收器。每个接收器可以有不同的过滤器。例如在 onResume (或 onCreate) 和 onPause (或 onDestroy)::

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

    最后,发送广播并与接收者一起接收:

    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.
    

以上都是凭记忆引用的,欢迎修改!

于 2013-02-14T20:54:56.850 回答