从静态ListFragment中构造DialogFragment

时间:2012-10-24 12:28:27

标签: android android-fragments actionbarsherlock

我正在使用 Actionbarsherlock ,并在我的Fragment活动中拥有 ListFragment DialogFragment

    public class RemainingTasks extends SherlockFragmentActivity{
        public static class CurrentListFragment extends SherlockListFragment{
                 //##need to call addDialog() from within one of the methods here
            }

    public void addDialog() {
          //Create and show the dialog.
          DialogFragment newFragment = MyDialogFragment.newInstance();
          newFragment.show(ft, "dialog");
    }

    public static class MyDialogFragment extends SherlockDialogFragment{

    }
}

现在,我需要从静态 CurrentListFragment 中调用addDialog()方法(将显示一个新对话框),但我无法。

我尝试了什么:

  1. 当我执行getActivity()时,我最终得到了SherlockActivity,而不是FragmentActivity。

  2. 无法调用getSupportFragmentManager()(错误:对非静态方法的静态引用)

  3. 有没有办法做到这一点? 此外,我正在采取这种方式,还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

固定。 将以下函数移至MainActivity(扩展了SherlockFragmentActivity,并充当RemainingTasks片段的主机)

public void addDialog() {}

public static class MyDialogFragment extends SherlockDialogFragment{

    }

然后我现在使用((MainActivity)getActivity()).addDialog()

来调用它