如何在方向更改后重新创建传递给DialogFragment的侦听器?

时间:2012-07-19 20:42:24

标签: android

我有DialogFragment通过listener做一些工作,我在创建时传递给它。 Listener是一个实现所需接口的Fragment实例。一切都很好但是在方向改变时,一切都在重新创建,我遗漏了listener,所以只是碰到NullPointeException。如何处理这种情况?如果方向发生变化,我应该关闭DialogFragment吗?我不认为用户会喜欢这种行为。所以我需要重新创建listener ......但是如何?

1 个答案:

答案 0 :(得分:3)

为什么不使用Fragment#setTargetFragment方法。像这样

public class Fragment1 extends Fragment {
    ...
    public void createFragment2(){
        final Fragment dialogFragment = new MyDialogFragment();
        dialogFragment.setTargetFragment(this);
        dialogFragment.show();
    }
}


public class Fragment2 extends DialogFragment{
    ...
    public void onEvent(){
        ((Fragment1)getTargetFragment()).onEvent();
    }
}