我正在使用 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()
方法(将显示一个新对话框),但我无法。
我尝试了什么:
当我执行getActivity()
时,我最终得到了SherlockActivity,而不是FragmentActivity。
无法调用getSupportFragmentManager()
(错误:对非静态方法的静态引用)
有没有办法做到这一点? 此外,我正在采取这种方式,还是有更好的方法?
答案 0 :(得分:0)
固定。
将以下函数移至MainActivity(扩展了SherlockFragmentActivity,并充当RemainingTasks
片段的主机)
public void addDialog() {}
和
public static class MyDialogFragment extends SherlockDialogFragment{
}
然后我现在使用((MainActivity)getActivity()).addDialog()