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

如何修改Activity的savedInstanceState,以便使用新数据重新创建DialogFragment?

在Android开发中,如果我们想要在Activity重新创建时使用新的数据来重新创建DialogFragment,我们可以通过修改Activity的savedInstanceState来实现。

首先,我们需要在Activity的onSaveInstanceState方法中保存需要传递给DialogFragment的新数据。这可以通过将数据存储在Bundle对象中来实现。例如,我们可以使用putString方法将字符串数据存储在Bundle中:

代码语言:java
复制
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString("newData", "Hello World");
}

接下来,在Activity的onCreate方法中,我们可以检查savedInstanceState是否为空,如果不为空,则表示Activity是重新创建的。我们可以从savedInstanceState中获取之前保存的新数据,并将其传递给DialogFragment。例如,我们可以使用getString方法从Bundle中获取之前保存的字符串数据:

代码语言:java
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState != null) {
        String newData = savedInstanceState.getString("newData");
        if (newData != null) {
            DialogFragment dialogFragment = MyDialogFragment.newInstance(newData);
            dialogFragment.show(getSupportFragmentManager(), "dialog");
        }
    }
}

在上面的代码中,我们首先检查savedInstanceState是否为空,如果不为空,则获取之前保存的新数据。然后,我们可以使用这个新数据来创建一个新的DialogFragment实例,并将其显示出来。

需要注意的是,我们需要自定义一个DialogFragment类(例如MyDialogFragment),并实现newInstance方法来传递新数据。在MyDialogFragment类中,我们可以使用newInstance方法接收新数据,并将其保存在DialogFragment的arguments中。然后,在MyDialogFragment的onCreateDialog方法中,我们可以从arguments中获取新数据并进行相应的处理。

总结起来,要修改Activity的savedInstanceState以便使用新数据重新创建DialogFragment,我们需要在Activity的onSaveInstanceState方法中保存新数据,在Activity的onCreate方法中检查savedInstanceState是否为空,并从中获取新数据来重新创建DialogFragment。

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

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 最佳方案

c)谷歌官方不建议使用ProgressDialog,这里我们会使用官方推荐DialogFragment创建加载框,如果你不了解:请看 Android 官方推荐 : DialogFragment...下面我将使用几个例子,分别使用上面的3种方式,和如何最好解决上述问题。...效果图: 4、使用Fragment来保存对象,用于恢复数据 如果重新启动你Activity需要恢复大量数据重新建立网络连接,或者执行其他密集型操作,这样因为配置发生变化而完全重新启动可能会是一个慢用户体验...真心很蛋疼,并且即使对话框关闭了,任务关闭了;用户旋转还是会造成重新创建任务,从头开始加载数据。...传入Activity时,我们会在再次打开一个加载框,当然了因为屏幕旋转并不影响加载数据,所有后台数据一直继续在加载。

2.1K20

Android后台杀死系列之一:FragmentActivity及PhoneWindow后台杀死处理机制

Activity启动及旧Activity保存流程 App在后台久置后,再次从桌面或最近任务列表唤醒时经常会发生崩溃,这往往是App在后台被系统杀死,再次恢复时候遇到了问题,而在使用FragmentActivity...FragmentActivity被后台杀死后恢复逻辑 当App被后台异常杀死后,再次点击icon,或者从最近任务列表进入时候,系统会帮助恢复当时场景,重新创建Activity,对于FragmentActivity...举个栗子 我们创建一个Activity,并且在onCreate函数中新建并show一个DialogFragment,之后通过某种方式将APP异常杀死(RogueKiller模拟后台杀死工具),再次从最近任务唤起...为什么出现两个DialogFragment Fragment在被创建之后,如果不通过add或者replace添加到Activity布局中是不会显示,在保存现场时候,也是保存了add这个状态,来看一下...关键是moveToState函数,这个函数强制将addFragment生命周期与Activity同步: void moveToState(Fragment f, int newState, int

3K30
  • DialogFragment 使用

    DialogFragment 意义 它和Fragment基本一致生命周期,因此便于Activity更好控制管理DialogFragment。...如何使用DialogFragment 有两种方法 实现onCreateDialog方法 通过继承DialogFragment并且实现它onCreateDialog(Bundle savedInstanceState...)方法来创建一个DialogFragment,这个方法返回是一个Dialog,意味着我们需要创建一个AlertDialog,并返回。...,而是在DialogFragmentonDestroyView()回调时,才会对DialogFragment进行出栈操作,所以如果你如果需要在Activity中频繁显示隐藏一个DialogFragment...DialogFragment并没有对Dialog消失提供监听给调用者使用,但是我们通过源码分析得知,DialogFragment在onActivityCreate当中其实已经帮我们设置了onDismissListener

    1.6K10

    android推荐使用dialogFrament而不是alertDialog

    DialogFragment在android 3.0时被引入。是一种特殊Fragment,用于在Activity内容之上展示一个模态对话框。典型用于:展示警告框,输入框,确认框等等。...在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。...4、 重写onCreateDialog创建Dialog 在onCreateDialog中一般可以使用AlertDialog或者Dialog创建对话框,不过既然google不推荐直接使用Dialog,我们就使用...5、传递数据Activity 从dialog传递数据Activity,可以使用“fragment interface pattern”方式,下面通过一个改造上面的登录框来展示这种模式。...,在点击登录时候,把activity强转为我们自定义接口:LoginInputListener,然后将用户输入数据返回。

    2.4K50

    三句代码创建全屏Dialog或者DialogFragment:带你从源码角度实现全屏Dialog

    Dialog是APP开发中常用控件,同Activity类似,拥有独立Window窗口,但是Dialog跟Activity还是有一定区别的,最明显就是:默认情况下Dialog不是全屏,所以布局实现不如...不让显示Title部分,关键点2就是常用setContentView,关键点3根4就是为了全屏对话框做修改,关键点4必须要放在setContent后面,因为如果放在setContent该属性会被冲掉无效...(推荐使用DialogFragment,它复用了Fragment声明周期,被杀死后,可以恢复重建) public class FragmentFullScreen extends DialogFragment...及rootView设置,在上面的基础上有两点需要处理,一是:内容区域延展上去;二是:状态栏变成透明(不透明你也看不见啊),如何延展内容区域,参考全屏、沉浸式、fitSystemWindow使用及原理分析...21526023112_.pic.jpg 作者:看书小蜗牛 原文链接: 三句代码创建全屏Dialog或者DialogFragment:带你从源码角度实现 仅供参考,欢迎指正

    4K40

    DialogFragment踩坑记

    普通Fragment还是DialogFragment 同时设置不要Title跟背景 隐藏Dialog 不保留活动 显示逻辑 推荐使用DialogFragment 要选android X下DialogFragment...版本,记得要选择第一种DialogFragment,当然,系统源码也很贴心把它FrameworkDialogFragment设置为不推荐使用,而且还注明让你使用support包下面的DialogFragment...()方法来展示 DialogFragment如果只是当做普通Fragment,建议使用普通Fragment就可以了,这样代码逻辑比较清晰 同时设置不要Title跟背景 想同时不要Title跟背景,...dialog,不过发生不保留,系统会自动重新展示dialog,这个时候,需要手动关闭dialog override fun onViewCreated(view: View, savedInstanceState...在监听到onResume时候,触发Dialog显示,代码就不贴了 推荐使用DialogFragment 建议展示Dialog地方,统一使用DialogFragment,更好处理生命周期各种场景

    2.1K30

    Android 撸起袖子,自己封装 DialogFragment

    DialogFragment 产生之前,我们创建对话框一般采用 Dialog,而且从代码编写角度来看,Dialog 使用起来其实更加简单,但是 Google 却是推荐尽量使用 DialogFragment...基本一样生命周期,使用 DialogFragment 来管理对话框,当旋转屏幕和按下后退键时候可以更好管理其生命周期 在手机配置变化导致 Activity 需要重新创建时,例如旋转屏幕,基于 DialogFragment...AlertDialog 或者 Dialog 创建出 我们想要 Dialog,因为这篇文章主要是讲 DialogFragment 封装,至于 DialogFragment 具体使用,可以参考下洋神这篇文章...基类,那么接下来我们当然要好好地来实现各种类型 DialogFragment 了,我思路是创建一个 DialogFragmentHelper 作为实现提示框帮助类,帮我们把代码都封装起来,使用时候只需要关注与...应该还没忘了我们上面创建了一个 IDialogResultListener 用于 DialogFragment 与逻辑层之间进行数据监听吧,为了能传入各种各样类型数据,这里我使用了 泛型 来进行处理

    1.3K41

    Android底部弹窗实现示例代码

    是一种特殊Fragment,用于在Activity内容之上展示一个模态对话框。 使用DialogFragment至少需要实现onCreateView或者onCreateDIalog方法。...onCreateView即使用定义xml布局文件展示Dialog。onCreateDialog即利用AlertDialog或者Dialog创建出Dialog。...也是Fragment,所以,DialogFragment有和Fragment一样生命周期,在onStart方法中初始化弹窗数据,在onCreateView中加载布局,同样,和Fragment使用方法也是一样...,下面看下在Activity使用 void showDialog() { FragmentTransaction ft = getFragmentManager().beginTransaction...,大家可以下载源码研究一下, 源码在这里 ,在做项目时选择最适合就好,在这里还是推荐使用DialogFragment,这种方式可定制性很高,实现弹窗方式也比较优雅。

    4.3K31

    Android中DialogFragment自定义背景与宽高方法

    介绍 DialogFragment在android 3.0时被引入。是一种特殊Fragment,用于在Activity内容之上展示一个模态对话框。典型用于:展示警告框,输入框,确认框等等。...在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。...本文主要给大家介绍了关于Android中DialogFragment自定义背景与宽高相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细介绍吧。...先申请无标题栏 @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState...) { getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); // ...... } 然后在onStart方法里重新指定宽高

    1.4K41

    Android入门教程 | DialogFragment 使用

    弹窗,是常见一种提示方式。 [1240] DialogFragment是在3.0时引入,是一种特殊 Fragment,用于在 Activity 上展示一个模态对话框。...DialogFragment 示例 确定UI样式 首先我们得知道做成什么样。一般来说简单弹窗是一个标题,一端文字内容。 或者带有一两个按钮。 这里我们做一个有标题和文字简单弹窗。...在onCreate方法中接收传入数据。传递数据使用了Bundle。...使用 把这个窗口弹出来。我们使用DialogFragment.show(@NonNull FragmentManager manager, @Nullable String tag)方法。...小结: 使用 DialogFragment 来实现弹窗。 需要确定 ui 样式,建立 layout,新建类继承DialogFragment,传入数据。 Android零基础入门教程视频参考

    1.1K20

    ★ Android基础篇-你应该知道Android Interface

    语言表达能力有限,上个代码可以帮助理解 (1) 创建接口 public interface ToastListener { void showToast(); } (2) 创建接口回调...) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);...效果入下 之前只是简单说了一下接口,只是知道它定义以后,设置并回调…OK我再举个栗子,加深一下印象 使用Interface进行传值 (设置一个DialogFragment页面) public class...) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);...接口引用指向实现对象。 一个类可以实现多个无关接口(这点和继承要有所区别) 和继承一样,接口与实现类之间存在多态性。 接口可以继承其他接口,并添加属性和抽象方法。

    1.2K30

    Android技能树 — Fragment总体小结

    然后网上有很多教程,叫你提交时候使用commitAllowingStateLoss()方法,虽然说不会抛出错误,但是如果在Activity已经保存状态完之后提交了它,到时候Ativity意外崩溃,再恢复数据时候就不会恢复在...并在需要时原封不动地传递给Activity。...重新创建时,会重新构建它所管理Fragment,原先Fragment字段值将会全部丢失(因为当切换横竖屏时,Fragment会调用自己无参构造函数,那么在构造函数传参就会失效),但是通过 Fragment.setArguments...DialogFragment: 我们知道现在大家已经很少使用了Dialog类,而是使用DialogFragment,其本质就是个Fragment。...其实这个本来也想多写点,但是我估计这个基本安卓开发都使用过,所以就直接用网上其他作者基础介绍文章: Android 必知必会 - DialogFragment 使用总结 同时具体自定义DialogFragment

    25110

    Android RetainFragment状态保存方法

    一、常见状态保存恢复方式 ①onSaveInstance + onRestoreInstance 这种方式是最通用实现状态保存与恢复,在Android生态种,组件和View大量使用了此方式。...②android:configChanges+onConfigurationChanged 这种情况适用于屏幕旋转和配置变化,只要作用是阻止Activity重建,因此对于【语言】【时区】调整可能需要重新启动...|keyboard|screenSize" ③onRetainNonConfigurationInstance 此方法是3.0版本Android系统中提供了代替方式②一种方式,使用场景是允许屏幕旋转...,和DialogFragment一样本身都是比较普通,这里RetainFragment更注重【用途】,而非Fragment名称。...public class WorkFragment extends Fragment { NetWorkTask netWorkTask = null; /** * 重建之后这里Context会自动替换成

    90521

    解决Android中自定义DialogFragment解决宽度和高度问题

    是一种特殊Fragment,用于在Activity内容之上展示一个模态对话框。典型用于:展示警告框,输入框,确认框等等。...在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。...2、 好处与用法 使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好管理其声明周期,它和Fragment有着基本一致声明周期。...上面会通过例子展示这些好处~ 使用DialogFragment至少需要实现onCreateView或者onCreateDIalog方法。...onCreateView即使用定义xml布局文件展示Dialog。onCreateDialog即利用AlertDialog或者Dialog创建出Dialog。

    4.9K20

    Android技能树 — Fragment总体小结

    然后网上有很多教程,叫你提交时候使用commitAllowingStateLoss()方法,虽然说不会抛出错误,但是如果在Activity已经保存状态完之后提交了它,到时候Ativity意外崩溃,再恢复数据时候就不会恢复在......... } 比如旋转屏幕,已保留fragment不会随着activity一起被销毁(但会销毁fragment视图); 相反,它会一直保留(进程不消亡前提下),并在需要时原封不动地传递给Activity...重新创建时,会重新构建它所管理Fragment,原先Fragment字段值将会全部丢失(因为当切换横竖屏时,Fragment会调用自己无参构造函数,那么在构造函数传参就会失效),但是通过 Fragment.setArguments...DialogFragment: 我们知道现在大家已经很少使用了Dialog类,而是使用DialogFragment,其本质就是个Fragment。...其实这个本来也想多写点,但是我估计这个基本安卓开发都使用过,所以就直接用网上其他作者基础介绍文章: Android 必知必会 - DialogFragment 使用总结 同时具体自定义DialogFragment

    1.1K20

    ViewBinding 与 Kotlin 委托双剑合璧

    1.3 ViewBinding 实现原理 AGP 插件会为每个 XML 布局文件创建一个绑定类文件 xxxBinding ,绑定类中会持有布局文件中所有带 android:id 属性 View 引用...不会, 未使用类会在混淆时被压缩。 ---- 2. ViewBinding 基本用法 这一节我们来介绍 ViewBinding 使用方法,内容不多。...答:Activity 实例和 Activity 视图生命周期是同步,而 Fragment 实例和 Fragment 视图生命周期并不是完全同步,因此需要在 Fragment 视图销毁时,手动回收绑定类对象...1、创建和回收 ViewBinding 对象需要重复编写样板代码,特别是在 Fragment 中使用案例; 2、binding 属性是可空,也是可变使用起来不方便。...总结 ViewBinding 是一个轻量级视图绑定方案,Android Gradle 插件会为每个 XML 布局文件创建一个绑定类。

    1.7K20
    领券