Fragment之9_____解除 DialogFragment

可通过两种方式  解除DialogFragment,  

1.  对话框碎片对象调用dismiss(),   此方法将从FragmentManager 删除碎片, 然后提交该事务 .  如果此DialogFrament 有一个后退栈, 方法将从事务栈中弹出当前对话框,  并显示上一个碎片事务状态。  dismiss() 方法 会调用标准DialogFragment 销毁回调方法, onDismiss().  但是,不能依靠onDismiss()  得出已调用dismiss()  的结论。因为设备配置更改时也会调用 onDismiss(). 

如果在显示对话框碎片时按下后退按钮,将导致在对话框碎片上触发onCancle() 方法,对话框碎片退出,所以无需自行调用dismiss().  但是, 如果希望通知Activity 对话框已取消,需要调用onCancle() 内的逻辑来实现,这是onCancle()  与 onDismiss() 之间的区别。使用onDismiss() , 仍然无法确定发生的何种操作触发了onDismiss()方法。  DialogFragment对象没有cancle(), 只有dismiss()

2. 提供另一个DialogFragment,  也就是说用一个新的 对话框碎片替换 原来的对话框碎片.

看一段示例代码:

if(view.getId() == R.id.btn_another_dialog) {
Activity  act = getActivity();
FragmentTransaction ft =  act.getFragmentManager().beginTransaction();
ft.remove(this);

ft.addToBackStack(null);   //增加回退栈一个空值
HelpDialogFragment  newDialogFragment = HelpDialogFragment.newInstance(R.string.help);
newDialogFragment.shwo(ft, "help");


}

在单个事务中, 我们先删除了当前的DialogFragment , 接着添加了新的 DialogFragment.  这样就产生了原来对话框 几乎消失 而新的对话框出现的效果。 如果用户按下后退按钮, 由于在后退栈上保存了此事务,所以新对话框将消失,上一个对话框将显示.


上一篇,对show()作了介绍, 现在可以了解到:  show()  方法自动将碎片添加到FragmentManager , dismiss() 方法自动从FragmentManager 删除碎片.  碎片只能向FragmentManager 碎片管理器添加一次.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值