Java 用于在MainActivity和广播接收器之间进行通信的接口

Java 用于在MainActivity和广播接收器之间进行通信的接口,java,android,android-fragments,android-intent,Java,Android,Android Fragments,Android Intent,在使用了可变效率的变通方法之后,我看到了这段优秀的视频,它让我了解了如何在片段之间进行通信。 (5点左右查看,这是主要想法) 这个想法看起来非常优雅,我想知道我是否可以使用这种接口方法在广播接收器和我的主要活动之间传递数据 为了使我的问题更具体,让我解释一下我到目前为止的情况 我有一个main活动,它有一个UpdateGUI()函数。由于我不能将其声明为静态,因为它使用了非静态的findviewbyId()方法,所以我实现了一个通信器接口,每当我在另一个片段中更改某些内容时,一条消息就会传递到在

在使用了可变效率的变通方法之后,我看到了这段优秀的视频,它让我了解了如何在片段之间进行通信。 (5点左右查看,这是主要想法)

这个想法看起来非常优雅,我想知道我是否可以使用这种接口方法在广播接收器和我的主要活动之间传递数据

为了使我的问题更具体,让我解释一下我到目前为止的情况

我有一个
main活动
,它有一个
UpdateGUI()
函数。由于我不能将其声明为静态,因为它使用了非静态的
findviewbyId()
方法,所以我实现了一个通信器接口,每当我在另一个片段中更改某些内容时,一条消息就会传递到在我的
MainActivity
中实现的respond方法中,该方法只调用
UpdateGUI()

我认为可以从广播接收器调用MainActivity的respond()方法。我的问题在于,当我想从片段中执行此操作时,我可以将其与
main活动
关联,这要归功于
OnAttach
方法


据我所知,广播接收机没有一个onAttach方法,我的问题就在这里。如何将广播接收器与我的主要活动关联

答案在于你可以在任何网站上找到的基本服务教程之一。这就是为什么你们应该在发布之前在互联网上搜索它(看你们得到的是反对票)

如何将广播接收器与我的主要活动关联

在Mainactivity中创建广播接收器的子类,并在onReceive()方法中执行工作:


答案在于你可以在任何网站上找到的基本服务教程之一。这就是为什么你们应该在发布之前在互联网上搜索它(看你们得到的是反对票)

如何将广播接收器与我的主要活动关联

在Mainactivity中创建广播接收器的子类,并在onReceive()方法中执行工作:


我有一个类似的问题,我解决了这个问题

  • 在我的BroadcastReceiver及其setter中插入一个接口

        private OnAudioBecomingNoisyListener mOnAudioBecomingNoisyListener;
    
    
        public void setOnAudioBecomingNoisyListener(OnAudioBecomingNoisyListener onAudioBecomingNoisyListener)
            {
            mOnAudioBecomingNoisyListener = onAudioBecomingNoisyListener;
            }
    
        public interface OnAudioBecomingNoisyListener
            {
            void onAudioBecomingNoisy();
            }
    
  • 在我的活动中实现接口并调用setOn…Listener(this)

  •     mPlayerBroadcastReceiver = new PlayerBroadcastReceiver();
        mPlayerBroadcastReceiver.setOnAudioBecomingNoisyListener(this);
    
  • 登记广播

    registerReceiver(mPlayerBroadcastReceiver, mIntentFilter);
    
  • 在onReceived中,调用方法

    public void onReceive(Context context, Intent intent) {
    
        switch(intent.getAction()) {
            case AudioManager.ACTION_AUDIO_BECOMING_NOISY:
                if(mOnAudioBecomingNoisyListener != null){
                    mOnAudioBecomingNoisyListener.onAudioBecomingNoisy();
                    break;
                } 
        }
    }
    

  • 我有一个类似的问题,我解决了这个问题

  • 在我的BroadcastReceiver及其setter中插入一个接口

        private OnAudioBecomingNoisyListener mOnAudioBecomingNoisyListener;
    
    
        public void setOnAudioBecomingNoisyListener(OnAudioBecomingNoisyListener onAudioBecomingNoisyListener)
            {
            mOnAudioBecomingNoisyListener = onAudioBecomingNoisyListener;
            }
    
        public interface OnAudioBecomingNoisyListener
            {
            void onAudioBecomingNoisy();
            }
    
  • 在我的活动中实现接口并调用setOn…Listener(this)

  •     mPlayerBroadcastReceiver = new PlayerBroadcastReceiver();
        mPlayerBroadcastReceiver.setOnAudioBecomingNoisyListener(this);
    
  • 登记广播

    registerReceiver(mPlayerBroadcastReceiver, mIntentFilter);
    
  • 在onReceived中,调用方法

    public void onReceive(Context context, Intent intent) {
    
        switch(intent.getAction()) {
            case AudioManager.ACTION_AUDIO_BECOMING_NOISY:
                if(mOnAudioBecomingNoisyListener != null){
                    mOnAudioBecomingNoisyListener.onAudioBecomingNoisy();
                    break;
                } 
        }
    }
    

  • 找到了一个解决办法。在我的
    mainActivity
    公共静态活动中声明了这一点
    onCreate
    方法中,我执行了以下操作<代码>活动=此然后在我的广播接收器上,我简单地声明了一个通信器:
    communicator comm2并执行以下操作
    comm2=(通信器)MainActivity.activity使我能够
    通信2.响应(“更新”)当我必须的时候。找到了一个解决方法。在我的
    mainActivity
    公共静态活动中声明了这一点
    onCreate
    方法中,我执行了以下操作<代码>活动=此然后在我的广播接收器上,我简单地声明了一个通信器:
    communicator comm2并执行以下操作
    comm2=(通信器)MainActivity.activity使我能够
    通信2.响应(“更新”)当我不得不这么做的时候。