gpt4 book ai didi

android - 从服务中获取当前 fragment

转载 作者:行者123 更新时间:2023-11-29 21:05:23 28 4
gpt4 key购买 nike

我试图从服务中获取当前 fragment ,但我得到的是空值。

服务:

MainActivity mainActivity=new MainActivity();
FragmentManager fm= mainActivity.getSupportFragmentManager();
Fragment currentFragment = fm.findFragmentByTag("myFragment");
if (currentFragment.isVisible()){
// send some stuff
} else {
// create notification
}

基本上我需要它发送一些值,如果它是可见的或者如果它不可见来创建通知。两者都在工作,但是当我把我的逻辑放在那里时,我得到了 currentFragment 的空值。谢谢。

最佳答案

首先,如果我是你,我会将那段代码移至 MainActivity。然后,有几种设计模式可以让您在 Activity 和 Service 之间进行通信:

  1. 使用 Intent
  2. Bind to Services
  3. 使用服务对象本身(单例模式)

对于您的情况,我会选择 2 或 3 个选项。

其次,实现Observer pattern Activity 应该是 observer,而 Service 可以是 subject

最后,在 onCreate() 方法中将服务注册为观察者,以便从服务获取消息作为方法调用。如何注册取决于您选择的选项。

附言我认为很明显,仅创建 Activity 对象不会获得任何 fragment ,因为 fragment 是在 Android 操作系统调用的某些生命周期方法上创建的。

关于android - 从服务中获取当前 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24762394/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com