首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

尝试调用新的片段页面时活动被销毁- Xamarin.Android

在Xamarin.Android中,当尝试调用新的片段页面时,活动(Activity)可能会被销毁。这是因为Android系统具有一种活动生命周期管理机制,用于管理应用程序中的活动。

活动生命周期包括以下几个阶段:创建(Create)、启动(Start)、恢复(Resume)、暂停(Pause)、停止(Stop)和销毁(Destroy)。当系统资源不足或用户导航到其他页面时,活动可能会被销毁。

为了解决这个问题,可以使用保存和恢复活动状态的方法。在活动被销毁之前,可以通过重写活动的onSaveInstanceState方法来保存活动的状态数据。然后,在活动重新创建时,可以通过重写onRestoreInstanceState方法来恢复保存的状态数据。

以下是一个示例代码:

代码语言:txt
复制
protected override void OnSaveInstanceState(Bundle outState)
{
    // 保存活动状态数据
    outState.PutString("key", "value");
    base.OnSaveInstanceState(outState);
}

protected override void OnRestoreInstanceState(Bundle savedInstanceState)
{
    base.OnRestoreInstanceState(savedInstanceState);
    // 恢复活动状态数据
    string value = savedInstanceState.GetString("key");
}

在Xamarin.Android中,还可以使用片段(Fragment)来解决活动被销毁的问题。片段是一种可以嵌入到活动中的独立模块,具有自己的生命周期。通过将页面拆分为多个片段,可以在活动被销毁后保留片段的状态。

要在Xamarin.Android中使用片段,可以创建一个继承自Fragment的类,并在活动中使用FragmentTransaction来管理片段的添加、替换和移除。

以下是一个示例代码:

代码语言:txt
复制
// 创建一个继承自Fragment的片段类
public class MyFragment : Fragment
{
    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        // 创建片段视图
        View view = inflater.Inflate(Resource.Layout.fragment_layout, container, false);
        return view;
    }
}

// 在活动中使用片段
protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    SetContentView(Resource.Layout.activity_layout);

    // 创建片段实例
    MyFragment fragment = new MyFragment();

    // 使用FragmentTransaction添加片段到活动中
    FragmentTransaction transaction = FragmentManager.BeginTransaction();
    transaction.Add(Resource.Id.fragment_container, fragment);
    transaction.Commit();
}

通过使用保存和恢复活动状态的方法或使用片段来管理页面,可以避免在尝试调用新的片段页面时活动被销毁的问题。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动开发平台:https://cloud.tencent.com/product/mpp
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云区块链(BCBaaS):https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙(Metaverse):https://cloud.tencent.com/product/metaverse

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

相关搜索:仅当主机活动被销毁时,如何从片段调用方法?已销毁调用片段上的活动当活动被销毁时,如何调用overridePendingTransition()?先前的活动在视图页面更改时被销毁活动被销毁时的UnRegister接口回调在单击父活动按钮以调用子片段中的方法时,尝试对空对象引用调用虚拟方法覆盖片断内的活动工具栏(并在片断被销毁时恢复)当我的应用被销毁时,firebase不会存储我的用户,它会跳过登录页面函数内部的变量是否会在每次调用函数时被销毁并重新初始化?尝试调用页面PeopleCode事件上的函数时出现PeopleCode错误Swift - Alert表示网站在尝试访问本应允许的页面时被阻止每当我浏览应用程序viewPager时,为什么我的片段onCreate被广泛调用?当尝试调用子流程中的bash脚本时,我被拒绝了权限Android (java):当尝试从活动返回到片段时,OnBackPress()关闭我的应用程序浏览器在页面重新加载时未调用新的Ajax请求Android Studio:当我尝试创建一个新的空活动时没有任何反应当post调用到达webform应用程序中的页面时,会话被重置当Listview中的项目被点击时,如何在新的活动中从firebase中检索数据?那么,即使调用者活动被销毁,短时间运行的Android后台任务也可以安全地忽略吗?当我尝试创建新的申请者用户时,Laravel FatalThrowableError调用null上的成员函数create()
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android Fragment用法知识点讲解

Android Fragment用法讲解.png Fragment组件 Android Fragment组件.png Fragment是Android 3.0时候引入,主要目的是为了给大屏幕(如平板电脑...适用于页面较多情况,每次切换会回收内存。...图片来源官方: 生命周期 onAttach(): 一旦片段与其活动相关联就被调用; onCreate(): 片段调用创建; onCreateView(): 创建并返回相关视图结构; onActivityCreated...(): 表示活动已被创建完成了,这里是activity创建成功; onStart(): 片段对用户可见; onResume(): 片段与用户开始交互; onPause(): 片段与用户不再交互;...onStop(): 片段不再对用户可见; onDestroyView(): 销毁与其View相关资源; onDestroy(): 销毁一切片段; onDetach(): 片段与其活动不再相关联

1K60

Android Fragment用法实例详解

Fragment是Android 3.0时候引入,主要目的是为了给大屏幕(如平板电脑)添加动态和灵活UI支持。利用Fragment实现更好用户体验。 ?...适用于页面较多情况,每次切换会回收内存。...onAttach(): 一旦片段与其活动相关联就被调用; onCreate(): 片段调用创建; onCreateView(): 创建并返回相关视图结构; onActivityCreated(...): 表示活动已被创建完成了,这里是activity创建成功; onStart(): 片段对用户可见; onResume(): 片段与用户开始交互; onPause(): 片段与用户不再交互;...onStop(): 片段不再对用户可见; onDestroyView(): 销毁与其View相关资源; onDestroy(): 销毁一切片段; onDetach(): 片段与其活动不再相关联。

1.4K31
  • Android交流会-碎片Fragment,闲聊单位与尺寸

    onAttach(): 一旦片段与其活动相关联就被调用; onCreate(): 片段调用创建; onCreateView(): 创建并返回相关视图结构; onActivityCreated(...): 表示活动已被创建完成了,这里是activity创建成功; onStart(): 片段对用户可见; onResume(): 片段与用户开始交互; onPause(): 片段与用户不再交互;...onStop(): 片段不再对用户可见; onDestroyView(): 销毁与其View相关资源; onDestroy(): 销毁一切片段; onDetach(): 片段与其活动不再相关联。...里代码 通常用这个来展示,但是代码过长,我们来简化一下 我们先来添加一个setMain() 方法,来显示打开界面,显示初始页面 实现点击底部导航栏来切换响应fragment,我们在onClick...MyFragment myFragment = getFragmentManager().findFragmentById(R.id.fragment); 接着通过调用getActivity()方法来获取当前片段和相关联活动实例

    1.2K20

    张高兴 Xamarin.Forms 开发笔记:Android 快捷方式 Shortcut 应用

    一、Shortcut 简介 Shortcut 是 Android 7.1 (API Level 25) 特性,类似于苹果 3D Touch ,但并不是压力感应,只是一种长按菜单。...原因是传入 Forms Page 类并不是 Java 原生类型。查阅 Xamarin.Android 相关文档发现,这个 Type 是必须继承 Activity 类。...既然是需要依赖 Activity ,那就通过新建一个 Android Activity 去调用 Forms 页面。...修改 Xamarin.Android 添加两个活动,ShortcutContainerActivity.cs 与 FormsActivity.cs 。...其中 SetClass 将跳板活动 ShortcutContainerActivity 传入;SetAction 是必须设置,要不然报错都不知道怎么回事;PutExtra 用于向下一个活动传递参数,我们这里传入名称用于在跳板活动里设置

    1.6K70

    【Flutter 专题】54 图解 Flutter 基本生命周期

    打开页面页面initState -> didChangeDependencies -> build -> 旧页面deactivate -> didChangeDependencies -> build...:初始化 / 状态改变 / 销毁; initState 在整个生命周期中初始化阶段只会调用一次; didChangeDependencies 当 State 对象依赖发生变动时调用; didUpdateWidget...当 Widget 状态发生改变时调用;实际上每次更新状态,Flutter 会创建一个 Widget,并在该函数中进行新旧 Widget 对比;一般调用该方法之后会调用 build; reassemble...只有在 debug 或 热重载 时调用; deactivate 从 Widget Tree 中移除 State 对象时会调用,一般用在 dispose 之前; dispose 用于 Widget 销毁...---- 生命周期非常重要也非常有趣,值得我们多多尝试和研究,和尚仅尝试了几种常见情况,如有错误请多多指导! 来源:阿策小和尚

    1.4K41

    张高兴 Xamarin.Forms 开发笔记:Android 快捷方式 Shortcut 应用

    一、Shortcut 简介 Shortcut 是 Android 7.1 (API Level 25) 特性,类似于苹果 3D Touch ,但并不是压力感应,只是一种长按菜单。...原因是传入 Forms Page 类并不是 Java 原生类型。查阅 Xamarin.Android 相关文档发现,这个 Type 是必须继承 Activity 类。...既然是需要依赖 Activity ,那就通过新建一个 Android Activity 去调用 Forms 页面。...修改 Xamarin.Android 添加两个活动,ShortcutContainerActivity.cs 与 FormsActivity.cs 。...其中 SetClass 将跳板活动 ShortcutContainerActivity 传入;SetAction 是必须设置,要不然报错都不知道怎么回事;PutExtra 用于向下一个活动传递参数,我们这里传入名称用于在跳板活动里设置

    1.4K20

    如何定位内存泄露

    开发者可以通过 DevTools 记录页面活动概况,生成可视化分析结果,从时间轴中直观了解内存泄漏情况;利用 DevTools 获取若干次内存快照,检查内存堆栈变化;以及使用 Chrome 任务管理器,...是否没有正确销毁定时器、闭包。 是否没有正确监听事件和销毁事件。 除此之外,开发者可以借助外部工具进行内存泄漏排查。 2....,在模拟用户操作一段时间后结束录制,DevTools 会将这段时间内页面行为活动进行记录和分析。...按需选取时间线中区域片段,检查对应时间段内活动类型和时间占用,作为排查和定位内存泄漏辅助办法。...启动 Node.js 带上 --expose-gc 参数以便调用 global.gc() 方法触发垃圾回收。

    2.2K00

    Android入门教程 | Fragment 基础概念

    例如,当 Activity 暂停,Activity 所有片段也会暂停;当 Activity 销毁,所有片段也会被销毁。...onPause() 系统会将此方法作为用户离开片段第一个信号(但并不总是意味着此片段会被销毁)进行调用。通常,应在此方法内确认在当前用户会话结束后仍然有效任何更改(因为用户可能不会返回)。...如果没有在执行删除片段事务时调用 addToBackStack(),则事务提交片段会被销毁,用户将无法回退到该片段。...它会经历以下状态 onStart() onResume() Fragment进入“后台模式”时候 它会经历以下状态 onPause() onStop() Fragment销毁了(或者持有它activity...宿主 Activity 已停止,或片段已从 Activity 中移除,但已添加到返回栈。已停止片段仍处于活动状态(系统会保留所有状态和成员信息)。

    3.5K40

    Activity 不只有跳转。功能篇(一)

    SingleTop:在每次启动活动时候如果发现栈栈顶已经有该活动了,那么就直接使用它,不会再创建活动实例。...(只要是在A上实例全部出栈,如ABCD,需要用到B,此时栈中AB,CD出栈) SingleInstance:对于设置该模式活动(Activity),会创建一个实例保存在返回栈中,这是因为可供其他程序调用这个活动...因为onCreate()调用该方法是系统正在创建一个Activity实例或重新创建一个以前实例,所以您必须Bundle在尝试读取之前检查该状态是否为空。...如果它为空,那么系统正在创建一个Activity实例,而不是恢复之前销毁实例。...任务栈中; 当ActivityALaunchMode为Standard: 由于每次启动ActivityA都是启动实例,和原来启动没关系,所以不会调用原来ActivityAonNewIntent

    1.1K20

    Vue.js框架中权衡艺术

    这是我参与「掘金日新计划 · 8 月更文挑战」第1天,点击查看活动详情 前言 8月更文活动又开始了,冲这奖品也得肝一肝,先给自己定个小目标,活动结束之前,先肝个7篇,完成个最基础任务。...不知道这个api可以去查一查,活着看下我之前写dom bom博客, 从零开始学习dom bom innerHTML 可以获取调用元素所有子节点对应html片段 可以是根据指定值创建DOM树,替换原有的元素节点...新建所有dom元素 新建页面,JavaScript运算和DOM构建层面相差不大,innerHTML 性能甚至优于 虚拟dom 当更新页面 innerHTML 虚拟DOM JavaScript运算...拼接html字符串 创建虚拟dom + diff算法 DOM构建性能因素 销毁旧dom新建dom与模版大小相关 必要dom更新与数据变化量相关 更新dom ,虚拟DOM性能更加优越 修改...运行时+编译 vue react 都是运行时+编译。 代码都会在编译被打包成渲染成 树形结构。在运行时,执行render进行渲染。

    1.7K20

    servletfilterlistenerinterceptor区别与联系

    2、filter:filter是一个可以复用代码片段,可以用来转换HTTP请求、响应和头信息。...比如spring 总监听器 会在服务器启动时候实例化我们配置bean对象 、 hibernate session 监听器会监听session活动和生命周期,负责创建,关闭session等活动...servlet在服务器运行生命周期为,在第一次请求(或其实体内存垃圾回收后再被访问)加载并执行一次初始化方法,跟着执行正式运行方法,之后会被常驻并每次请求直接执行正式运行方法,直到服务器关闭或清理执行一次销毁方法后实体销毁...JSP在首次访问时候应用服务器转换为servlet,在以后运行中,容器直接调用这个servlet,而不再访问JSP页面。JSP实质仍然是servlet。...,并调用init()方法来初始化实例; (2)、每一次请求都只调用方法doFilter()进行处理; (3)、停止服务器时调用destroy()方法,销毁实例。

    86631

    国内 Mono 相关文章汇总

    开始涉足iPhone开发领域尝试,这也为今天Xamarin融资打下了基础。...开发跨平台应用程序 编写和Mono兼容.Net程序系列----最常见不兼容场景和基本解决办法 使用Mono管理Coyote Linux mono 调用windows webService mod_mono...2.8是一个重要版本更新,有着显著改善,Mono 2.8包括C#4.0支持(也是现在默认配置),新一代垃圾回收器,框架,LLVM支持,目前认为是稳定,2.0版本embedding...Monotouch在IPAD与IPhone使用UIImagePickerController图片选择不同代码 Monotouch 常用例子代码 Monotouch多视图创建与销毁 Monotouch...—Xamarin.Android回忆录 Xamarin.Android快速入门 MONO x64 amd_x64 Xamarin.Android多界面 Xamarin.Android活动生命周期 Xamarin.Android

    11.2K60

    手把手教你搭建android模块化项目框架番外(一) launchWhenResumed Deprecated

    我们先来分析为什么这个方法弃用了,首先看弃用说明,大致描述是当代码执行到launchWhenResumed,并且此时用户将lifecycleOwner销毁或至于后台等操作后,代码将保存在暂停点(如delay...因为保存时间有可能相当长,并不可控,例如首页加载接口准备弹出dialog,但是用户进了二级页面,这个时间不可控,有可能直到用户销毁了app也不能执行到此处。...例如如下代码:当打印1111111后,将app切换到二级页面,然后XX秒以后切换回当前页面,此时会打印22222,实际代码为使用全局变量保存了代码片段。...:当打印111111后,将app切换到二级页面,然后XX秒以后切换回当前页面,此时会打印继续打印111111,5秒后打印222222,实际代码为当脱离预期生命周期后,代码片段销毁,直到恢复生命周期,...取消代码,并在生命周期恢复后重新执行,即,代码执行到暂停点(例如:delay),生命周期脱离预期,执行销毁,生命周期恢复后,代码从头开始运行,就像我上述说代码片段一样,不过此情况可能并不常用。

    27410

    Fragment找不到资源Id引起线上Crash

    该线上问题是某个版本出现,之前未出现过类似问题,这部分Fragment代码也是很久没动过二、尝试复现首先看能否结合堆栈尝试线下复现,如果线下能复现,很大概率能分析清楚根因,找到解决办法。...正常进入这个fragment时候并没有onStart回调出现。于是,大胆猜测线上crash是不是出现了销毁重建场景。一般销毁重建场景有:转屏,切后台系统回收再切前台重建。...那么现在问题是如何模拟出Activity销毁重建,来验证这个堆栈是否一致开发者选项正好提供了这样操作:不保留活动图片开启后,在出现问题AboutFragment页面进行前后台切换,来验证这个调用堆栈...中间梳理过程就省略了,完整调用时序如下:1、当应用切到后台,且系统销毁后,重新切回前台onCreate时序图片这个链路调用没有问题,但不同于正常点击菜单跳转。...接下来重点看onStart调用链路:图片在这种销毁重建场景下,onStart阶段执行完了几乎所有的操作,但有执行先后顺序。

    96140

    Android之Fragment

    当一个片段指定了自身布局,它能和其他片段配置成不同组合,在活动中为不同屏幕尺寸修改布局配置(小屏幕可能每次显示一个片段,而大屏幕则可以显示两个或更多)。   ...例如:当activity暂停,它拥有的所有的Fragment们都暂停了,当activity销毁,它拥有的所有Fragment们都被销毁。...把Fragment对象跟Activity关联调用onAttach(Activity)方法; 2....因为Fragment对象所依附Activity对象挂起,或者在Activity中正在执行一个修改Fragment对象操作,而导致Fragment对象不再跟用户交互,系统会调用Fragment对象...因为Fragment对象所依附Activity对象终止,或者再Activity中正在执行一个修改Fragment对象操作,而导致Fragment对象不再显示给用户,系统会调用Fragment对象

    66820

    【Flutter 专题】57 图解页面小跳转 (三)

    和尚在去年刚接触 Flutter 学习了一下页面跳转路由基本用法,随着逐渐学习和场景使用,对一些特殊场景下路由使用进行尝试; Pop / Push pushReplacementNamed.../ pushReplacement pushReplacementNamed / pushReplacement 可以将页面替换掉旧页面,旧页面销毁; 如 A -> B ->...C 在 B 页面采用 pushReplacementNamed / pushReplacement 方式到 C ,B C 所替换,由 C 返回页面直接到 A,其中 B 在替换销毁;使用场景可用于...popAndPushNamed popAndPushNamed 可以将本页面销毁并打开页面,旧页面会被销毁; 如 A -> B -> C 在 B 页面采用 popAndPushNamed.../pushAndRemoveUntil ,若 predicate 为 false 可以到达预展示页面,并销毁栈内其他所有页面;若为 true 则跟普通开启页面无异; 如 A -> B

    1.7K41

    探究活动Activity(2)界面跳转及生命周期

    onCreate() 这个方法会在活动第一次创建时候调用,我们可以在这个方法中完成活动初始化操作,比如加载布局、绑定事件等。 onStart() 这个方法在活动有不可见变为可见时候调用。...onResume() 这个方法在活动准备好和用户进行交互时候调用。此时活动处于运行状态。 onPause() 这个方法在系统准备去启动或恢复另一个活动时候调用。...此时活动处于暂停状态 onStop() 这个在活动完全不可见时候调用,他和**onPause()**区别在于,如果启动活动是一个对话框式活动,那么onPause()方法会得到执行,而onStop...onDestroy() 这个方法在活动销毁之前调用,之后活动将变为销毁状态,此时活动处于销毁状态。...按home键返回手机主桌面,此时程序只是挂起来在后台执行,并没有销毁,所以会执行onPause()和onStop()方法。

    1K20

    C#移动跨平台开发(2)Xamarin移动跨平台解决方案是如何工作

    它在系统启动时候就会产生,它会完成虚拟机初始化,库加载,预制类库和初始化操作。如果系统需要一个虚拟机实例,它会迅速复制自身,以最快数据提供给系统。...Xamarin.Android 架构 ?   ...那个Dalvik虚拟机实体就像一个宿主,我们APP在宿主上运行,而我们所有用C#写方法都会以ACW形式调用。...Xamarin.Android Framework中有很多就是MCW,关于MCW创建以及C#与Java集成开发东西我们后面再细讲,包括一个C#开发Android应用程序是如何启动,我们后面再细讲...也就是说C#写IPhone应用程序和objective-c 写是一样。并且Xamarin团队保证在每一个IOS系统更新时间同步更新Xamarin.IOS这样我们就不用担心滞后了。

    2.6K110

    Android从零开始搭建MVVM架构(5)—— LifeCycle详解

    2.Event :从框架和Lifecycle类派发生命周期事件。这些事件映射到活动片段回调事件。 3.State :由Lifecycle对象跟踪组件的当前状态。...生命周期状态为DESTORYED,表示当前Activity还不存在,没有创建或者已经销毁,我们通常考虑比较多就是,onDestory()方法执行后,当前Activity已经销毁。...生命周期感知组件最佳实战 1.尽可能保持您UI控制器(活动片段)尽可能精简。...2.尝试编写数据驱动用户界面,其中您用户界面控制器职责是在数据更改时更新视图,或将用户操作通知给ViewModel。 3.把你数据逻辑放在ViewModel类中。...这使您可以使您视图更具说明性,并最大限度地减少需要在活动片段中编写更新代码。

    81220
    领券