我尝试调用一个调用getsupportfragmentmanager()的方法,但是得到:
IllegalStateException: FragmentManager has not been attached to a host.
广播接收器启动,活动中的方法(当前在ui中)启动,如下所示,但我得到错误:
BottomSheet bottomSheet = new BottomSheet();
bottomSheet.show(getSupportFragmentManager(), "bottomButtons");
我所要做的就是从一个服务中调用bottomsheet,因为我不能从服务中调用getsupportfragmentmanager,所以我必须通过广播接收器来调用它!如何让工作表显示,由我的服务中的事件触发?
2条答案
按热度按时间i1icjdpr1#
从后台服务调用显示位于当前显示在ui中的活动中的底部工作表的方法。我使用了可变的livedata。
我初始化了一个全局布尔值,在我的服务中完成;
当我的服务中触发所需的事件时,我将live data变量的值设置为true。具有
在活动中,我需要显示我通过以下方式观察此变量的底页:
我希望这可以帮助任何人在我的情况。
cbeh67ev2#
Fragment
是ui的一部分。BroadcastReceiver
以及Service
是后台组件,与ui无关。你甚至不能调用这个方法getSupportFragmentManager()
从BroadcastReceiver
. 这甚至不应该编译!仅限
Activity
组件可以用ui做一些事情。