我有一个 DialogFragment
,通过在创建时传递给它的listener
执行某些操作。该listener
是实现必需接口的Fragment
实例。一切正常,但在方向更改时,一切都会被重新创建,我错过了listener
,因此遇到了NullPointeException
。如何处理这种情况?我应该在方向更改发生时关闭DialogFragment
吗?我认为用户不会喜欢这种行为。所以我需要重新创建一个listener
……但是怎么做呢?
我有一个 DialogFragment
,通过在创建时传递给它的listener
执行某些操作。该listener
是实现必需接口的Fragment
实例。一切正常,但在方向更改时,一切都会被重新创建,我错过了listener
,因此遇到了NullPointeException
。如何处理这种情况?我应该在方向更改发生时关闭DialogFragment
吗?我认为用户不会喜欢这种行为。所以我需要重新创建一个listener
……但是怎么做呢?
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();
}
}
onCreate()
方法中设置setRetainInstance(true)
时,它只是在配置更改时被解除。 - Eugene