在使用可变效率的变通方法之后,我开始使用这个优秀的视频,让我了解如何在片段之间进行通信。 https://www.youtube.com/watch?v=VyyGP_d0Ia8(检查大约5.00,这是主要的想法)
这个想法看起来很优雅,我想知道我是否可以使用这种接口方法在广播接收器和我的主要活动之间传递数据。
为了使我的问题更具体,让我解释一下到目前为止我所拥有的。
我有一个MainActivity
具有UpdateGUI()
功能。由于我不能声明它是静态的,因为它采用非静态findviewbyId()
方法,我已经实现了一个通信器接口,每当我在我的Other片段中更改某些内容时,消息将被传递到我的MainActivity
中实现的响应方法,该方法只调用UpdateGUI()
。
我认为可以从广播接收器调用MainActivity的respond()方法。我的问题在于,当我想从片段中做到这一点时,我可以将它与MainActivity
联系起来,这要归功于OnAttach
方法。
据我所知,BroadcastReceivers没有onAttach方法,这就是我的问题。如何将广播接收器与mainActivity关联?
答案在于您可以在任何站点上找到的基本服务教程之一。这就是为什么你应该在互联网上搜索之前发布它(见你得到了downvotes)。
如何将广播接收器与我的mainActivity相关联
在Mainactivity中创建Broadcast接收器的子类,并在onReceive()方法中完成工作:
public class MainActivity extends FragmentActivity{
// your MainActivity Code
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// do your stuff here
}
} // MyReceiver
} // MainActivity
我遇到了类似的问题,我解决了这个问题。
private OnAudioBecomingNoisyListener mOnAudioBecomingNoisyListener;
public void setOnAudioBecomingNoisyListener(OnAudioBecomingNoisyListener onAudioBecomingNoisyListener)
{
mOnAudioBecomingNoisyListener = onAudioBecomingNoisyListener;
}
public interface OnAudioBecomingNoisyListener
{
void onAudioBecomingNoisy();
}
public class PlayerService extends Service implements OnAudioBecomingNoisyListener
后...
mPlayerBroadcastReceiver = new PlayerBroadcastReceiver();
mPlayerBroadcastReceiver.setOnAudioBecomingNoisyListener(this);
registerReceiver(mPlayerBroadcastReceiver, mIntentFilter);
public void onReceive(Context context, Intent intent) {
switch(intent.getAction()) {
case AudioManager.ACTION_AUDIO_BECOMING_NOISY:
if(mOnAudioBecomingNoisyListener != null){
mOnAudioBecomingNoisyListener.onAudioBecomingNoisy();
break;
}
}
}