xamarin - 如何在不从 Xamarin.Forms 的第一页重新启动应用程序的情况下重新创建 Android 中最顶层的 Activity?
问题描述
据说,当我们更改主题时,我们必须在android中重新创建当前活动才能使其生效。
在Xamarin.Forms
我获得当前活动时,它总是返回 me MainActivity
。因此,如果我重新创建最顶层的活动,它会从第一页开始,而不是刷新当前页面。
有什么方法可以让我重新创建活动并仍然在我所在的页面上。
前任 :
当前行为:页面 A -> B -> C -> D -> 重新创建 -> 再次从 A 开始。
预期行为:页面 A -> B -> C -> D -> 重新创建 -> 应该只在 D 上 b 并且仍然应该能够更改主题。
我意识到,Xamarin.Forms
将所有内容页面作为片段推送到MainActivity
. 那么,通过何种方式,Activity 被重新创建但仍然保持所有已加载的 Fragments 再次加载?
我的实现很简单。当我更改主题时,我调用平台特定的依赖服务方法:
[assembly: Dependency(typeof(NativeServices))]
namespace XFThemes.Droid.Dependencies
{
public class NativeServices : INativeServices
{
public void OnThemeChanged(ThemeManager.Themes theme)
{
CrossCurrentActivity.Current.Activity.Recreate();
}
}
}
解决方案
推荐阅读
- javascript - Highstocks 图表:显示一周数据
- vue.js - 使用 mapbox 进行坐标转换
- python - 未收到密码重置电子邮件
- spring - 如何在 Spring 5 和 Tomcat 8 (Log4jConfigListener) 中加载外部 log4j 日志配置
- php - 基于条带数量的计费 - 发票已支付
- ruby-on-rails - Docker:chmod:无法访问“chmod”:没有这样的文件或目录
- java - 如何返回实现列表?
- three.js - THREE.js 从加载的 GLTF 中定位缓冲区几何的各个实例
- hibernate - 如何在 ElasticSearch Hibernate 集成中更改分片数量
- angular - 将 NG-Zorro 从 V8 升级到 V9 给出:“Class extends value undefined is not a constructor or null”