android 碎片问题,Android碎片问题

我正在使用Fragments来表示我的应用程序中的不同视图.在视图之间导航时,我使用以下代码替换片段:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right);

ft.replace(R.id.main_linearlayout_fragmentcont, frag);

ft.addToBackStack(null);

ft.commit();

旋转时我遇到了很多问题并重建了活动.我需要支持旧版本的android所以android:configChanges =“orientation”不是一个选项.很多问题都是由于Android如何保存Fragment状态的本质.

这些是我遇到的问题:

1)片段转换在旋转后自动恢复时,不记得弹出事件的自定义动画.然而他们记得我的BackStack.我知道我可以编写自己的后台处理程序,使用动画进行替换并一起摆脱弹出,但我想知道是否有办法在调用popBackStack()之前重置动画或者让FragmentManager记住旋转后自动恢复时的动画.

2)我遇到的另一个问题是我在我的一个顶级片段视图中有一堆子视图(linearlayouts),它们包含自己的片段.这些子视图以编程方式创建和填充.当我的片段在旋转后重新创建时,我以编程方式重建片段对象的onCreateView中的子视图,最后在每个子视图下面都有重复的片段(1 – 我以编程方式创建,1 – Android片段从恢复创建).我假设这是因为我在使用相同的id旋转后以编程方式重建子视图.有没有办法防止碎片被恢复?什么时候Android将片段从savedState注入这些视图我以编程方式构建?我该如何防止这种情况发生?

3)对于我的frag(Fragment)对象,上面的替换代码似乎多次触发onCreateView.当我仅运行上面的代码一次时,这是没有旋转的.有没有理由使用上面的代码多次调用片段的onCreateView?

有关碎片的问题:

1)我可以阻止Android在重建活动时自动恢复片段吗?我该怎么做?它是基于LinearLayout的ID吗?我可以调用包含片段onStop的LinearLayout的removeAllViews吗?这样,视图在保存时不存在?

2)有没有办法将片段添加到我有引用但没有ID的LinearLayout?看来片段添加,替换API需要一个int ID.

谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值