Fragment 的 BroadcastReceiver onCreate 方法未被调用
Fragment's BroadcastReceiver onCreate method does not get called
我的 Activity 中有一个简单的 Fragment,我在其中启用和禁用了蓝牙适配器,我想使用 Fragment 中的 BroadcastReceiver 监听蓝牙适配器的状态变化。原因是我想在蓝牙状态改变时直接改变 Fragment 的 UI 元素。这是我的代码:
public class FragmentBT extends Fragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
IntentFilter iFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(BtStateChangedReceiver, iFilter);
}
@Override
public void onDestroy()
{
super.onDestroy();
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(BtStateChangedReceiver);
}
public BroadcastReceiver BtStateChangedReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
... change UI based on the extra data from intent ...
}
}
}
当我使用 Fragment 的 ActionBar 中的操作按钮在我的设备中启用或禁用 BT 时,BT 会打开和关闭,但我的接收器永远不会被调用。我从来没有进入接收者的 onReceive 方法。我意识到这是一个很常见的问题,但我尝试了几个解决方案但都没有用(并且所有都已合并到我当前的代码中)。
感谢您的宝贵意见!
试试这个:
getActivity().registerReceiver(BtStateChangedReceiver, iFilter);
getActivity().unregisterReceiver(BtStateChangedReceiver);
docs说'LocalBroadcastManager'是用来'register for and send broadcasts of Intents to local objects within your process'的。
我的 Activity 中有一个简单的 Fragment,我在其中启用和禁用了蓝牙适配器,我想使用 Fragment 中的 BroadcastReceiver 监听蓝牙适配器的状态变化。原因是我想在蓝牙状态改变时直接改变 Fragment 的 UI 元素。这是我的代码:
public class FragmentBT extends Fragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
IntentFilter iFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(BtStateChangedReceiver, iFilter);
}
@Override
public void onDestroy()
{
super.onDestroy();
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(BtStateChangedReceiver);
}
public BroadcastReceiver BtStateChangedReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
... change UI based on the extra data from intent ...
}
}
}
当我使用 Fragment 的 ActionBar 中的操作按钮在我的设备中启用或禁用 BT 时,BT 会打开和关闭,但我的接收器永远不会被调用。我从来没有进入接收者的 onReceive 方法。我意识到这是一个很常见的问题,但我尝试了几个解决方案但都没有用(并且所有都已合并到我当前的代码中)。
感谢您的宝贵意见!
试试这个:
getActivity().registerReceiver(BtStateChangedReceiver, iFilter);
getActivity().unregisterReceiver(BtStateChangedReceiver);
docs说'LocalBroadcastManager'是用来'register for and send broadcasts of Intents to local objects within your process'的。