java - 如何在动画结束时移动到另一个片段
问题描述
1-在 MainActivity 的 onCreate 方法中,我们使用以下方法加载 SplashFragment:
loadFragment(new SplashFragment(), this);
2-然后在 SplashFragment 的 onViewCreated 方法中,我们有一个动画。我们想在动画结束后移动到 RegisterFragment 使用:
@Override
public void onAnimationEnd(Animation animation) {
loadFragment(new RegisterFragment(), getActivity());
}
1-作品
2-不工作!
为什么?!我们该如何解决?
注意:我们的 loadFragment 方法放在适配器类中:
public static void loadFragment(Fragment fragment, Context context) {
FragmentTransaction transaction = ((FragmentActivity)context).getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
解决方案
您可以尝试在 UI 线程上运行它,因为它可能是线程问题。
@Override
public void onAnimationEnd(Animation animation) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
loadFragment(new RegisterFragment(), getActivity());
}
});
}
推荐阅读
- spring-boot - 您可以使用 Spring 数据 Solr 注释配置 Solr docker 容器吗?
- javascript - 使用 Key 将数组值推送到另一个数组
- r - 在 R 中的函数内使用 geom_vline 绘图时遇到“参数不是数字或逻辑”的问题
- php - 使用 Selenium/WebDriver 和 PHP 从元素中获取文本
- html - 链接外部文件中的 svg 路径以在 HTML 中显示
- java - 如何按值对 json 进行排序以查看真实的 DIFF
- javascript - 如何在 JavaScript 中总结对象信息
- wordpress - 小wordpress上的条纹支付图标
- mysql - mysql更新1000万行的大约时间
- javascript - 使用 date-fns 格式化日期