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

当我移动到另一个活动并返回时,片段editText数据被清除

当您移动到另一个活动并返回时,片段中的EditText数据被清除的原因是,当活动切换或销毁时,片段的视图层次结构也会被销毁。这意味着片段中的EditText实例也会被销毁,其中的数据将丢失。

为了解决这个问题,您可以通过以下几种方式来保存和恢复EditText中的数据:

  1. 在片段的onSaveInstanceState方法中保存数据:在片段的onSaveInstanceState方法中,您可以使用Bundle对象保存EditText的文本数据。然后,在片段的onCreateView或onActivityCreated方法中,您可以从Bundle中恢复数据并将其设置回EditText中。示例代码如下:
代码语言:txt
复制
@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString("editTextData", editText.getText().toString());
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_layout, container, false);
    editText = view.findViewById(R.id.editText);

    if (savedInstanceState != null) {
        String editTextData = savedInstanceState.getString("editTextData");
        editText.setText(editTextData);
    }

    return view;
}
  1. 使用ViewModel来保存数据:ViewModel是一种设计模式,用于在配置更改(如屏幕旋转)时保留数据。您可以创建一个继承自ViewModel的类,并在其中保存EditText的文本数据。然后,在片段中使用ViewModel来获取和设置EditText的数据。这样,即使活动被销毁和重新创建,数据仍然会保留。示例代码如下:
代码语言:txt
复制
public class MyViewModel extends ViewModel {
    private MutableLiveData<String> editTextData = new MutableLiveData<>();

    public void setEditTextData(String data) {
        editTextData.setValue(data);
    }

    public LiveData<String> getEditTextData() {
        return editTextData;
    }
}

public class MyFragment extends Fragment {
    private EditText editText;
    private MyViewModel viewModel;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        viewModel = new ViewModelProvider(requireActivity()).get(MyViewModel.class);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_layout, container, false);
        editText = view.findViewById(R.id.editText);

        viewModel.getEditTextData().observe(getViewLifecycleOwner(), new Observer<String>() {
            @Override
            public void onChanged(String data) {
                editText.setText(data);
            }
        });

        return view;
    }

    @Override
    public void onPause() {
        super.onPause();
        viewModel.setEditTextData(editText.getText().toString());
    }
}

通过以上两种方法,您可以在移动到另一个活动并返回时,保留片段中EditText的数据。请注意,这些方法都是针对Android开发,如果您在其他平台或框架上进行开发,可能需要使用相应的技术来保存和恢复数据。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,建议您参考腾讯云官方文档或咨询腾讯云的技术支持团队,以获取与您需求相关的产品和解决方案。

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

相关·内容

Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展

有三种做法: 1)普通文本,当标签文本破坏(删除、插入、追加文本),让绑定的数据失效,这就是微信的做法; 2)普通文本,把标签文本作为一个整体,不能对标签内部插入光标,杜绝数据破坏的情况,这是微博的做法...也就是说,我们可以通过SpanWatcher侦听光标活动,通过Selection实现当光标移动到Span内部,让它重新移动到Span最近的边缘位置,Span内部永远无法插入光标。...并且,当你打印EditText文本上的Span,你找不到SelectionSpanWatcher。这说明SelectionSpanWatcher在setText()过程中被清除掉了。...阅读上面的源码片段,不知道有没有人注意到setText(CharSequence)传入一个CharSequence对象,TextView#getText()返回的是CharSequence对象, EditText...他可以重写,重新注入EditText

2.2K30

android学习笔记----隐式意图和显式意图

requestCode int:如果>=0,则当活动退出,此代码将在onActivityResult()中返回。...如果活动显式返回,则不会返回任何结果,或者在操作期间崩溃,resultCode将为RESULT_CANCELED。 当您的活动重新启动,您将在onResume()之前立即收到此调用。...resultCode的值来判断数据来源,确定这个是由哪一个活动返回数据。...(多条记录,这些数据存放在上一步的集合中);提示:可以使用ListView分多行显示数据,每行显示一条记录; (c) 当点击“清除显示”按钮清除当前正在输入的数据,即清空“姓名、年龄和身高”这三个控件中的输入...,等待重新输入; (d) 当点击“全部删除”按钮,清空集合中的数据使用Toast控件显示“全部数据已经删除!”

1.3K10
  • 安卓中activity的生命周期_产品生命周期五个阶段

    其它状态 (Created与Started)都是短暂的,系统快速的执行那些回调函数通过执行下一阶段的回调函数移动到下一个状态。...如果用户从暂停状态回到当前activity,系统应该恢复那些数据执行onResume()方法。...Note: 即使系统会在activity stop停止这个activity,它仍然会保存View对象的状态(比如EditText中的文字) 到一个Bundle中,并且在用户返回这个activity恢复它们...然而,因为onStop()方法应该做清除所有activity资源的操作,我们需要在重启activtiy重新实例化那些清除的资源,同样, 我们也需要在activity第一次创建实例化那些资源。...当系统调用这个函数,系统会在Activity异常Destory传递 Bundle 对象,这样我们就可以增加额外的信息到Bundle中保存到系统中。

    64710

    Jetpack DragAndDrop 库——拖放操作如此轻松!

    拖放 是最基本的手势操作,用户可以点击并按住图片、文本或其他数据元素,然后将其拖动至另一个应用 (或者同一个应用的其他位置) 松手,即可将数据放置到新的位置上。...手势通常在触摸屏上表现为长按,在使用鼠标则为点击拖动。...对用户而言,将数据从一个应用拖动到另一个应用是很自然的体验,因此用户在 分屏或窗口模式 下使用应用可以更有效地进行多任务处理。...△ 从一个应用中拖动到另一个应用 DropHelper 和 DragStartHelper 结合使用,可以更轻松地处理手势支持、回调、样式和像素完美对齐。....addInnerEditTexts(innerEditText) .build() ) { _, payload -> // 在这里处理数据返回需要委托给平台的任何内容

    1.3K20

    RefactoringGuru 代码异味和重构技巧总结

    耦合器 这一组中的所有异味都会导致类之间的过度耦合,或者显示如果耦合过度委托所取代会发生什么。 功能依赖 一个方法访问另一个对象的数据多于它自己的数据。...提取方法 问题:你有一个可以组合在一起的代码片段。 解决方案:将此代码移动到一个单独的新方法(或函数),并用对该方法的调用替换旧代码。 内联函数 问题:当方法主体比方法本身更明显,请使用此技巧。...如果需要用类型代码替换字段值,则另一个状态对象为“已插入”。 用字段替换子类 问题:你的子类只在(常量返回)方法上有所不同。 解决方案:用父类中的字段替换方法,删除子类。...上字段 问题:两个类具有相同的字段。 解决方案:从子类中删除字段,并将其移动到超类。 上方法 问题:你的子类具有执行类似工作的方法。 解决方案:使方法相同,然后将它们移动到相关的超类。...上构造器主体 问题:你的子类的构造器的代码基本相同。 解决方案:创建一个超类构造器,并将子类中相同的代码移动到它。在子类构造器中调用超类构造器。

    1.8K40

    Android富文本开发

    stateAlwaysHidden-总是隐藏状态:当设置该状态,软键盘总是隐藏,和stateHidden不同的是,当我们跳转到下个界面,如果下个页面的软键盘是显示的,而我们再次回来的时候,软键盘就会隐藏起来...stateAlwaysVisible-总是显示状态:当设置为这个状态,软键盘总是可见的,和stateVisible不同的是,当我们跳转到下个界面,如果下个页面软键盘是隐藏的,而我们再次回来的时候,软键盘就会显示出来...json数据提交给服务器; 19.2 编辑富文本 服务器返回html给客户端加载 涉及到富文本的加载,后台管理端编辑器生成的一段html 代码要渲染到移动端上面,一种方法是前端做成html页面,放到服务器上...20.生成json片段上传服务器 参考了易车发布帖子,提交数据到服务器,针对富文本,是把它拼接成对象。将文字,图片按照富文本的顺序拼接成json片段,然后提交给服务器。...写文章,插入本地图片,即使你没有提交文章,也会把图片上传到服务器,然后返回一个图片链接给你,最后当你发表文章,图片只需要用链接替代即可。

    8.5K20

    Windows10中的键盘快捷方式

    执行该字母相关的命令 Alt + Enter 显示所选项目的属性 Alt + 空格键 打开活动窗口的快捷方式菜单 Alt + 向左键 返回 Alt + 向右键 前进 Alt + Page Up 向上移动一个屏幕...+ 箭头键 当组或磁贴的焦点放在“开始”菜单上,可将其朝指定方向移动 Ctrl + Shift + 箭头键 当磁贴的焦点放在“开始”菜单上,将其移到另一个磁贴即可创建一个文件夹 Ctrl + 箭头键...若要打开它,请选择“开始” 菜单 >“设置”>“Cortana”,打开“当我按 Windows 徽标键 + C ,让 Cortana 听我的命令”下的切换键。...若要打开它,请选择“开始” 菜单 >“设置”>“Cortana”,打开“当我按 Windows 徽标键 + C ,让 Cortana 听我的命令”下的切换键。...Ctrl + End(标记模式) 将光标移动到缓冲区结尾处 Ctrl + 向上键 在输出历史记录中上一行 Ctrl + 向下键 在输出历史记录中下移一行 Ctrl + Home(历史记录导航) 如果命令行为空

    4.5K20

    android学习笔记----SQLite数据

    这两个方法都可以创建或者打开一个现有的数据库(如果数据库已存在则直接打开,否则创建一个新的数据库),返回一个可对数据库进行读写的对象。...(如果数据库还没被创建),数据会添加成功 我们可以把数据库导出到SQLite Expert去查看表内容,也可以直接在控制台查看一个大概,查看数据库和表有没有创建。...这个目录中,mydb.db是我们创建的 另一个是mydb.db-journal,这是为了让数据库能够支持事务而产生的临时日志文件,通常情况下这个文件的大小是0字节 接下来输入sqlite3 mydb.db...当我们不设定一列的时候,不都是数据库给设为默认值吗?很多字段设置默认值也是null,这里显示的设置也是null,有什么区别吗,怎么会显示设置了之后就允许插入了呢?...columns:返回哪些列的列表。传递NULL将返回所有列,这是不鼓励的,以防止从存储区读取不被使用的数据

    98120

    安卓应用安全指南 5.1 创建密码输入界面

    5) 当显示虚拟密码,并按下“显示密码”按钮清除最后输入的密码并提供输入新密码的状态。...(必需) 为防止密码被偷窥,当活动启动,密码显示选项的默认值应该设置为OFF。...另外,在虚拟显示按下“显示密码”的情况下,清除密码切换到纯文本显示模式。 它有助于防止最后输入的密码嗅探的风险,即使设备传递给第三方,比如它被盗。...return "hirake5ma"; } 在虚拟显示的情况下,当密码显示选项打开,请清除显示的内容。...登录失败的错误信息 在登录过程中,需要输入两个信息,ID(账号)和密码。 登录失败时有两种情况。 一个是 ID 不存在。 另一个是 ID 存在,但密码不正确。

    1.1K20

    深入浅出 JavaScript 弱引用

    与 C 语言不同,JavaScript 是一种高级编程语言,它在创建对象自动分配内存,在不再需要对象自动清除内存。当不再使用对象清除内存的过程称为垃圾收集。...第 11 行代码返回false,因为 WeakSet() 将被自动清除,因此,WeakSet() 不会阻止垃圾回收。 5....当数据结构在内存中数据结构的属性认为是可访问的,并且它们通常保存在内存中。...「WeakMap 的应用」 WeakMap 可以用于 web 开发的两个领域:缓存和额外的数据存储。 6.1 缓存 这是一种 web 技术,它涉及到保存(即存储)给定资源的副本,并在请求返回它。...6.2 额外的数据存储 WeakMap() 的另一个重要用途是额外的数据存储。想象一下,我们正在建立一个电子商务平台,我们有一个计算访客数量的程序,我们希望能够在访客离开减少计数。

    80210

    Android拾萃- Activity的生命周期和启动模式

    在有些情况下,Activity 将只在金字塔中部分下移等待(比如,当用户切换到其他应用时),Activity 可从该点开始回顶端(如果用户返回到该 Activity),并在用户停止的位置继续。...Resumed、Paused、Stopped这几种状态在用户没有进一步操作时会保持在该状态,而其余的,都会在执行完相应的回调函数后快速跳过,很容易理解,resumed 状态就是在当前界面,后面两个状态是进入了另一个界面活动...在我们退出应用程序时,必须把所有的任务栈中所有的activity清除出栈,任务栈才会被销毁。当然任务栈也可以移动到后台, 并且保留了每一个activity的状态....当我返回上一个组件,我们更希望复用这个Activity。 但Android系统的stander模式每次都会为我们创建一个新的Activity添加到Task中。...离开这个Activity所依赖的任务栈后,当我们重新返回,该Activity将会被finish掉,而且其他Activity不会受到影响。

    1.5K50

    Windows快捷键速查

    Alt + 空格键 打开活动窗口的快捷菜单。 Alt + 向左键 返回。 Alt + 向右键 前进。 Alt + Page Up 向上移动一个屏幕。...Alt + Shift + 箭头键 当组或磁贴的焦点放在“开始”菜单上,可将其朝指定方向移动。...Ctrl + Shift + 箭头键 当磁贴的焦点放在“开始”菜单上,将其移到另一个磁贴即可创建一个文件夹。 Ctrl + 箭头键 打开“开始”菜单后调整其大小。...Ctrl + Home(标记模式) 将光标移动到缓冲区的起始处。 Ctrl + End(标记模式) 将光标移动到缓冲区的结尾处。 Ctrl + 向上键 在输出历史记录中上一行。...空格键 如果活动选项为复选框,则选择或清除复选框。 Backspace 如果在“另存为”或“打开”对话框中选择文件夹,则打开上一级别的文件夹。 箭头键 如果活动选项是一组选项按钮,请选择一个按钮。

    4.2K20

    Android数据存储之SharePreferences简记

    资料编辑功能的实现思路:在用户登录将相关资料从服务器传到客户端保存一份,通过保存的Uid等实现相应的信息发布及资料编辑等该用户的相关操作。...取出数据 使用 sp.getXXX(). sp.getString("KEY"," "),若存在该值,返回前者,反之返回后者,同时后者属于非必须填写项(当然在你认为一定能取到值的情况下,否则未出现什么不可知异常也说不准...查询结果不存在提示“none” SharedPreferences数据的四种操作模式  SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE...Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能应用本身访问,在该模式下,写入的内容会覆盖原文件的内容 Context.MODE_APPEND:模式会检查文件是否存在...MODE_WORLD_READABLE:表示当前文件可以其他应用读取. MODE_WORLD_WRITEABLE:表示当前文件可以其他应用写入 SP.xml中的文件 <?

    1.9K10

    Android应用界面开发——简单控件和Activity间传递数据

    Activity间传递数据 Activity之间传递数据有两种方法: startActivity(intent):打开另一个Activity,同时向开启的界面Activity传递数据。...startActivityForResult(intent):打开另一个Activit,同时向开启的Activity传递数据,并回传数据。...,所以打开买书界面应该用startActivityForResult方法,实现onActivityResult方法,当打开的界面由结果返回,调用该方法,并在这个方法里将返回的结果显示出来。...进入买书界面,有一个EditText用于输入书名,点击提交,将该书名返回给上一个界面,点击取消按钮,直接返回上一个界面。 ?...,用Intent保存该书名,利用setResult方法将该Intent返回给上一个界面,这样就达到了返回数据的目的。

    1.9K30

    【译】.NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱

    只有当其遇到new关键字,它才会在堆上为对象分配内存。 离开这个Method1方法(the fun):现在执行控制语句开始离开方法体,这时所有在栈上为变量所分配的内存空间都会被清除。...值类型将数据和内存都保存在同一位置,而一个引用类型则会有一个指向实际内存区域的指针。   通过下图,我们可以看到一个名为i的整形数据类型,它的值赋值到另一个名为j的整形数据类型。...当我们将一个int类型的值赋值到另一个int类型的值,它实际上是创建了一个完全不同的副本。换句话说,如果你改变了其中某一个的值,另一个不会发生改变。于是,这些种类的数据类型被称为“值类型”。...在应用中最大的一个意义就在于:理解数据从栈移动到堆的过程中所发生的性能消耗问题,反之亦然。   考虑一下以下的代码片段当我们将一个值类型转换为引用类型,数据将会从栈移动到堆中。...相反,当我们将一个引用类型转换为值类型数据也会从堆移动到栈中。   不管是在从栈移动到堆还是从堆中移动到栈上都会不可避免地对系统性能产生一些影响。

    35020

    【工具】一个投行工作十年MM的Excel操作大全

    >移动到当前数据区域的边缘:CTRL+ 箭头键 移动到行首:HOME 移动到工作表的开头:CTRL+HOME 移动到工作表的最后一个单元格。...:F6 移动到拆分的工作簿中的上一个窗格:SHIFT+F6 滚动显示活动单元格:CTRL+BACKSPACE 显示“定位”对话框:F5 显示“查找”对话框:SHIFT+F5 重复上一次“查找”操作:...SHIFT+F4 在保护工作表中的非锁定单元格之间移动:TAB 2>Excel快捷键之处于END模式在工作表中移动 打开或关闭 END 模式:END 在一行或列内以数据块为单位移动:END, 箭头键...:箭头键 当缩小显示,在文档中每次滚动一页:PAGE UP 当缩小显示,滚动到第一页:CTRL+上箭头键 当缩小显示,滚动到最后一页:CTRL+下箭头键 5>Excel快捷键之用于工作表、图表和宏...编辑活动单元格并将插入点放置到线条末尾:F2 取消单元格或编辑栏中的输入项:ESC 编辑活动单元格清除其中原有的内容:BACKSPACE 将定义的名称粘贴到公式中:F3 完成单元格输入:ENTER

    3.6K40

    关于EditText屏蔽焦点的问题,及为什么clearFocus()方法失效了?

    我们有时候的需求EditText 在不需要的时候,无法点击,或者取消它的默认焦点。 我们先看看通用解决方法。...,由一个switch控制,当switch关闭editText可以输入,有焦点,否则无法点击,无焦点。...true, refocus); } 这里的意思是,如果焦点可用,或者非触控模式下,焦点会尝试将焦点放在第一个可以对焦的视图上,也就是说,相当于它被重置了,所以产生了我们上面图片里的问题,焦点没有清除...,如果propagate为true,可选地将更改向上传播到父层次结构,放置新的焦点。...总结一下,也就是我们需要在父布局处添加 触控模式为true,即就是android:focusableInTouchMode="true",这样当清除焦点的时候,就会将焦点赋给父布局,而不是重置到第一个EditText

    1.1K20

    android入门 — Activity启动模式

    1.standard模式   standard模式是系统的默认启动方式,每次激活Activity都会创建Activity,放在任务栈中。   ...系统不会在乎活动是否已经存在于返回栈中,每次启动都会创建该活动的一个新的实例。...MainActivity.class); startActivity(intent); } }   启动的时候,有一个activity,之后每按一次按钮,都会有一个新的activity创建...3.singleTask模式    每次活动启动系统首先在返回栈中检查是否存在该活动的实例,如果存在,就把这个活动之上的所有活动出栈,如果没有发现活动,就需要创建一个新的activity。...4.singleInstance模式(单例模式)   在这种模式下,会有一个单独的返回栈来管理这个活动,不管哪个应用程序来访问这个活动,都共用一个返回栈。

    70070

    【Rust学习】04_所有权

    这个类型管理分配到堆上的数据,所以能够存储在编译未知大小的文本。...需要一个当我们处理完 String 将内存返回给分配器的方法。 第一部分由我们完成:当我们调用 String::from ,它的实现会请求它需要的内存。这在编程语言中几乎是通用的。...中, // 它也将返回给 s3 } // 这里, s3 移出作用域丢弃。...) -> String { // a_string 进入作用域 a_string // 返回 a_string 移出给调用的函数 } 变量的所有权总是遵循相同的模式:将值赋给另一个变量移动它...当持有堆中数据值的变量离开作用域,其值将通过 drop 清理掉,除非数据移动为另一个变量所有。 在每一个函数中都获取所有权接着返回所有权有些啰嗦。

    5410

    用纹理增加细节

    当我们在渲染表面绘制一个纹理,那个纹理的纹理元素可能无法精确的映射到OpenGL生成的片段上,此时会出现两种情况,放大和缩小。...当我们将几个纹理元素挤到一个片段,缩小就发生了;当我们把一个纹理元素扩大到几个片段,放大就发生了。针对每种情况,我们都需要配置纹理过滤器。...val TAG="TextureHelper" fun loadTexture(context: Context, id:Int):Int{//加载由id指定的图像,生成纹理对象返回...片段着色器也通过u_TextureUnit变量接收实际的纹理数据,u_TextureUnit定义为一个sampler2D类型,它指定是一个二维纹理数据的数组。...插值的纹理坐标和纹理数据传递给着色器函数texture(),它会读入纹理中那个特定坐标处的颜色值,然后把结果赋值给fragColor,以便设置片段的颜色。

    10910
    领券