如何使用新的导航架构组件从扩展 BroadcastReceiver 的类导航到片段
Posted
技术标签:
【中文标题】如何使用新的导航架构组件从扩展 BroadcastReceiver 的类导航到片段【英文标题】:How to navigate to a fragment from a class extending BroadcastReceiver using the new Navigation Architecture Components 【发布时间】:2021-03-20 16:29:11 【问题描述】:我有我的广播接收器,它应该扫描传入的消息并使用捆绑包并使用新的导航架构组件和导航控制器将原始地址和消息传递给新片段。我被卡住了,因为我在广播接收器中找不到视图。这是我到目前为止所尝试的。
public class SimpleSmsReceiver extends BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent)
Bundle pudsBundle = intent.getExtras();
Object[] pdus = (Object[]) pudsBundle.get("pdus");
SmsMessage messages = SmsMessage.createFromPdu((byte[])pdus[0]);
Bundle bundle = new Bundle();
bundle.putString("MessageNumber", messages.getOriginatingAddress());
bundle.putString("Message", messages.getMessageBody());
Navigation.findNavController(context).navigate(R.id.nav_otp_fragment, bundle);
我收到错误必需类型:提供的视图:上下文
【问题讨论】:
【参考方案1】:BroadcastReceiver
s 不是 UI 组件。您无法对BroadcastReceiver
中的 UI 执行任何操作。如果您的BroadcastReceiver
引用了您的Activity
,那么它可以调用Activity
中的一个方法(以数据作为参数),以便Activity
然后可以创建Fragment
并执行其他任何必要的操作。
【讨论】:
以上是关于如何使用新的导航架构组件从扩展 BroadcastReceiver 的类导航到片段的主要内容,如果未能解决你的问题,请参考以下文章
如何在新的导航抽屉架构组件中实现共享应用或评分应用或注销功能