如何在屏幕方向改变后重新创建传递给DialogFragment的监听器?

5

我有一个 DialogFragment,通过在创建时传递给它的listener执行某些操作。该listener是实现必需接口的Fragment实例。一切正常,但在方向更改时,一切都会被重新创建,我错过了listener,因此遇到了NullPointeException。如何处理这种情况?我应该在方向更改发生时关闭DialogFragment吗?我认为用户不会喜欢这种行为。所以我需要重新创建一个listener……但是怎么做呢?

1个回答

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

1
你能解释一下吗?当我在DialogFragment的onCreate()方法中设置setRetainInstance(true)时,它只是在配置更改时被解除。 - Eugene
1
我发现这是一个问题。http://code.google.com/p/android/issues/detail?id=17423#c1 所以这种方法行不通,问题仍然存在。 - Eugene
我们还可以在Fragment2中设置接口,并像这样操作 https://dev59.com/AWYr5IYBdhLWcg3w---U - LOG_TAG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接