使用 AndroidAnnotation 在 EBean class 中调用 getChildFragmentManager

Call getChildFragmentManager inside EBean class using AndroidAnnotation

我想创建一个 @EBean class,其中包含与显示和隐藏 ProgressDialogDialogFragment 相关的所有功能。例如:我需要在 Fragment 中显示 ErrorDialogFragment,因此下面的代码需要 getChildFragmentManager()

ErrorDialogFragment.showDefaultDialog(getChildFragmentManager(),
                    "Device is disconected!");

有没有办法在 @EBean class 中调用 getChildFragmentManager()

@EBean
public class YourBean {

  @RootContext
  FragmentActivity activity;

  public void showDialog() {
    activity.getSupportFragmentManager(). ...
  }
}

但是请确保只将此 bean 注入到 FragmentActivity,否则 Activity 本身将不会注入 bean。

编辑:您不能将 FragmentManagerFragment 注入带有注释的 bean。您必须为此创建一个 setter 方法:

@EBean
public class YourBean {

  private FragmentManager fragmentManager;

  public void showDialog() {
    ErrorDialogFragment.showDefaultDialog(fragmentManager,
                "Device is disconected!");
  }

  public void setFragmentManager(FragmentManager fragmentManager) {
    this.fragmentManager = fragmentManager;
  }
}

在你的Fragment中:

@AfterInject
void afterInject() {
  yourBean.setFragmentManager(getChildFragmentManager());
}