android - Android - 片段转换时出现空白屏幕
问题描述
我使用自定义片段动画。xml文件如下:
从下到上:
<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
<translate android:duration="350" android:fromXDelta="0%" android:fromYDelta="100%" android:toXDelta="0%" android:toYDelta="0%" />
</set>
从上到下:
<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
<translate android:duration="350" android:fromXDelta="0%" android:fromYDelta="0%" android:toXDelta="0%" android:toYDelta="100%" />
</set>
此示例按预期工作:
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.setCustomAnimations(0, R.anim.top_to_bottom);
ft.replace(R.id.main_layout, fragmentA, fragmentA.ID);
ft.commit();
但是这个例子对我不起作用。我在过渡时看到空白屏幕。Fragment A 消失,FragmentB 上升时出现黑屏。
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.setCustomAnimations(R.anim.bottom_to_top, 0);
ft.replace(R.id.main_layout, fragmentB, fragmentB.ID);
ft.commit();
解决方案
尝试添加这一行,因为您正在用新的片段替换前一个片段,它向您显示一个空白屏幕。
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.setCustomAnimations(R.anim.bottom_to_top, 0);
ft.replace(R.id.main_layout, fragmentB, fragmentB.ID);
// This line will maintain previous fragment in stack
ft.addToBackStack(fragmentB.getClass().getSimpleName());
ft.commit();
推荐阅读
- javascript - 即使它是在其他客户端集线器中编写的,如何使用信号器调用客户端函数
- swift - 如何解决 Shopify GraphQL Checkout 响应中显示的结帐空问题
- android - 如何在 Kitkat 和 Lollipop 中创建安全的网络连接?
- android - Ionic 4 alpha,如何构建 apk 以及如何在模拟器中运行?
- netbeans - 从 Netbeans 中的自动完成分析中排除文件夹或 Netbeans 自动完成很慢
- php - 第13行的PHP注册表错误
- sql-server - 将一个共享的 Cloud SQL 用于三个单独的 App Engine 项目是否有意义?
- android - 如何从内部存储中获取所有文件夹名称并将其显示在文本字段中?
- python - 根据真/假“集”在熊猫数据框中添加后续值
- ios - 初始化后如何更改按钮的位置?