使用AndroidAnnotation在EBean类中调用getChildFragmentManager

时间:2016-12-21 09:52:06

标签: android android-fragments android-annotations

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

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

有没有办法在getChildFragmentManager()班级内调用@EBean

1 个答案:

答案 0 :(得分:1)

@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());
}