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

如何在调用同一片段上的runOnUiThread()刷新回收视图时将光标保留在EditText中

在调用同一片段上的runOnUiThread()刷新回收视图时,可以通过以下步骤将光标保留在EditText中:

  1. 首先,确保你的片段类实现了Runnable接口,以便在runOnUiThread()方法中执行。
  2. 在片段的run()方法中,使用EditText的requestFocus()方法来请求焦点,以确保光标在EditText中。
  3. 在requestFocus()方法后,使用setSelection()方法设置光标的位置。可以使用EditText的getText()方法获取文本内容,然后使用length()方法获取文本长度,将光标设置在文本的末尾。

以下是一个示例代码:

代码语言:txt
复制
public class YourFragment extends Fragment implements Runnable {
    private EditText editText;

    // 在片段的生命周期方法中调用runOnUiThread()方法
    private void refreshUI() {
        getActivity().runOnUiThread(this);
    }

    @Override
    public void run() {
        // 获取EditText实例
        editText = getView().findViewById(R.id.editText);

        // 请求焦点
        editText.requestFocus();

        // 设置光标位置在文本末尾
        editText.setSelection(editText.getText().length());
    }
}

这样,在调用runOnUiThread()方法刷新回收视图时,光标将保留在EditText中。请注意,上述示例代码中的R.id.editText应替换为你实际使用的EditText的ID。

此外,腾讯云提供了一系列云计算相关产品,如云服务器、云数据库、云存储等。你可以根据具体需求选择适合的产品。你可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多产品信息和文档。

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

相关·内容

Android开发笔记(三十六)展示类控件

在代码实现时,可调用如下方法: setGravity : 设置文本对齐方式。 setLines : 设置文本行数。 setMaxLines : 设置文本最大行数。...setMovementMethod : 设置文本移动方式,一般取值“new ScrollingMovementMethod()”,如不设置无法拉动文本。注意该方法只能在代码调用。...在代码实现时,可调用如下方法: setCompoundDrawables : 设置文本周围图形。该方法有四个参数,分别表示左边、上方、右边、下方图形。...setHintTextColor : 设置提示文本颜色。 在录入用户信息(比如输入姓名、密码等等),EditText输入回车键,常常不要换行而是让光标直接跳到下一个编辑框。...另外注意centerInside,当图片尺寸大于视图,centerInside等同于fitCenter;当图片尺寸小于视图,centerInside等同于center。

1.4K30

真·富文本编辑器演进之路-Span整体性控制

控制选中 在讲解如何在普通文本对Span做整体性控制前,我们先来考虑下选择问题——如何让「整体性Span」内部无法被选中。 首先,我们要知道,Edittext光标也是一种Span。...那么问题来了,我要怎么监听Edittext光标呢?...其实,AndroidSpan不仅功能非常强大,而且也提供了非常完善管理API,在TextView和Edittext,我们要监听Text变化过程,可以使用TextWatcher,它可以在文本发生改变进行回调...在TextVIew内部,它通过DynamicLayout来渲染Spannable数据,在其内部会设置SpanWatcher来监听Span新增、修改和删除,当监听到变化后,会调用其内部方法进行刷新。...,当我们Selection在「整体性Span」(通过IntegratedSpan来标记),就自动修改Selection位置,从而实现「整体性Span」中间无法插入光标

1.9K30

Android富文本开发

何在ViewGroup添加view,删除view给相应view和受影响其他view添加动画,不太容易做。...第二次:inJustDecodeBounds设置为false再次调用decode函数就能生成bitmap了。而此时bitmap已经压缩减小很多了,所以加载到内存并不会导致OOM。...对于光标前面的字符串保留,设置给当前获得焦点EditText(此为分割出来第一个EditText) 把光标后面的字符串放在新创建EditText(此为分割出来第二个EditText) 在第二个...20.生成json片段上传服务器 参考了易车发布帖子,提交数据到服务器,针对富文本,是把它拼接成对象。文字,图片按照富文本顺序拼接成json片段,然后提交给服务器。...这种场景很容易想到: 比如,在简书,掘金写博客。写文章,插入本地图片,即使你没有提交文章,也会把图片上传到服务器,然后返回一个图片链接给你,最后当你发表文章,图片只需要用链接替代即可。

8.4K20

当你刷新RecyclerView程序崩掉时候

我们知道android:animateLayoutChanges="true"是在列表增删Item时候调用系统自带动画效果,而RecyclerView机制是对子视图复用,不会在真正意义对Item...图片截自StackOverFlow 从回答,我们可以看到,在多个Item包含EditText时候,因为其中一个EditText抢占了RecyclerView焦点,导致无法被回收,所以报错。...其解决方法为给RecyclerView添加focusableInTouchMode属性,使之在触摸模式下(手指接触屏幕)依然可以获取到焦点,从而对Item进行回收刷新。...onRefresh操作代码 从上述代码可以看到,我先清空了已有的数据,然后再获取网络接口数据,而从清空数据到获取到数据这段时间里,List数据是不存在,所以给了RecyclerView要回收...其解决方法是:列表清空方法放到获取到接口数据以后执行。 以上就是本文所有内容,对于上述解决方法理解存在“主观臆断”倾向,因此本文仅供参考,若有错误地方,欢迎大家在文章下方评论指正!

2.2K20

实战 | 详解MVC、MVP模式并分别实现登录界面案例

文章主要内容摘要: MVC模式分析和实战 MVP模式分析和实战 MVP模式下多个Activity情况下接口抽取 实战案例效果如下:输入正确密码并点击登录按钮,Toast“登录成功”,若密码或账号错误...作用: 分离视图逻辑和业务逻辑,降低耦合; Activity只处理生命周期任务,代码简洁; 视图逻辑和业务逻辑抽象到了View和Presenter,提高阅读性; Presenter被抽象成接口,可以有多种具体实现...,   用于实现对应接口; 这样子,我们便把业务逻辑抽象出来,实现在业务逻辑实现类, 到时候Activity.java要使用对应业务逻辑时候, 只需要简简单单实例化一个对应业务逻辑实现类对象..., 用它调用一个自定义方法(如下面的attachView()), 把Activitythis指针(也即activity本身)赋给业务逻辑实现类对象全局变量, 之后即可用这个业务逻辑类对象去调用实现类对应业务逻辑方法...要用泛型进行定义,因为下面的子业务逻辑模块(MainBasePresenter )都需要用attachView()绑定对应UI逻辑接口(MainBaseView),所以这里使用泛型,子逻辑模块在继承可以动态匹配

1.2K30

Android面试问题整理

你后台Activity被系统 回收怎么办?如果后台Activity由于某原因被系统回收可了,如何在被系统回收之前保存当前状态? ?...在控制层上将数据按照视图模型要求(也就是Android SDKAdapter)封装就可以直接在视图模型显示了,从而实现了数据绑定。...比如显示Cursor中所有数据ListActivity,其视图层就是一个ListView,数据封装为ListAdapter,并传递给ListView,数据就在ListView显示。...内, 当没有任何对象指向它 GC 执行后将会被回收 SoftReference 会尽可能长保留引用直到 JVM 内存不足才会被回收(虚拟机保证), 这一特性使得 SoftReference 非常适合缓存...把问题引导到你熟悉领域,或者知识点,尽量每个技术点细节凸显出来,

91920

内存泄露一些坑

,不会依赖于任何其他类,而且这里面是把activity以弱引用方式传到MyHandler,即便是静态MyHandler类对象一直存在,但是由于它持有的是activity弱引用,在gc回收时候activity...,但是当这个线程执行完了之后,Activity对象就能被成功回收了,这会造成一个崩溃风险,可能在线程里面有调用到一些Activity内部对象,但是在Activity退出后这些对象有可能有些已经被回收了...WebView内存泄漏,这篇文章所分析解决方案确实有效,亲测可用!...并分发给对应Handler去执行,如果在子线程调用了Looper.prepare()和Looper.loop()方法,Looper.loop()会导致这个线程一直不死,一直堵在这里,因此线程就无法结束运行...,里面已经用ViewReference来包装view设置到Spannable中了,所以是把view弱引用传进去了,因此可以被gc回收,而在4.0android系统,很可能就不是这么做,所以4.0系统上面就是

1.7K31

RxBinding详解: 规范而强大安卓UI响应式编程

一段时间后,你fragment或者activity由于各种匿名类而显得十分混乱。这时,如果你想再为该类控件/视图添加由其它视图触发响应事件,那将变得非常复杂。...subscription String类型值显示在nameLabel。...更多功能 极少数场合我们需要对一个视图点击事件进行多次监听(由于各种原因)。你知道Android是不能多次监听同一个点击事件除非你自己写一堆代码去手动实现。...在 context 中使用 share 允许对同一个button点击事件多次监听,简直太强大了。 RxBinding 癖好与安装 在使用RxBinding需要注意一些地方。...首先,不能使用弱关联——文档所说: 不可使用弱关联。RxJavasubscription会做适当拉近回收,弱关联可能会被回收掉。 第二,许多Android UI 事件内部接口返回多个参数。

2.9K40

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

; 3)占位符,使用不可分割Span(ImageSpan)替换,这是QQ做法。...; 2)光标是一种特殊选中状态,start与end在同一位置。...也就是说,我们可以通过SpanWatcher侦听光标活动,通过Selection实现当光标移动到Span内部,让它重新移动到Span最近边缘位置,Span内部永远无法插入光标。...并且,当你打印EditText文本Span,你找不到SelectionSpanWatcher。这说明SelectionSpanWatcher在setText()过程中被清除掉了。...阅读上面的源码片段,不知道有没有人注意到setText(CharSequence)传入一个CharSequence对象,TextView#getText()返回是CharSequence对象, EditText

2.1K30

Android自定义支付密码输入框,光标问题总结!

image.png 本文主要分析自定义验证码输入框过程中常被忽视光标问题及个人一点经验总结 onDraw方法一直被调用 我们在onDraw方法添加Log日志,发现onDraw方法每间隔500ms...左右被调用一次 image.png 此处先给出解决办法: *当我们继承EditText自定义验证码输入框后,EditText自带光标对我们来说不可见,已经没有意义,因此需要将其隐藏掉,防止onDraw...我们知道invalidate方法会触发页面重绘进而调用onDraw方法,EditText又继承TextView,在TextView源码搜索invalidate关键字然后加断点调试运行,最后代码锁定在...Blink类run方法每隔500ms会调用TextViewinvalidateCursorPath方法 问题3:如何自定义验证码输入框光标?...虽然EditText自带光标已经不能满足我们需求,但我们可以参考其光标闪烁源码,然后修改一下来满足我们需求,重点是修改光标绘制显示位置 在控件可见开启光标闪烁,控件不可见时取消光标闪烁 override

1.3K20

Android内存管理(一)官方文档介绍

通常情况下,您无法从代码控制何时发生垃圾回收事件。系统有一套专门确定何时执行垃圾回收标准。当条件满足,系统会停止执行进程并开始垃圾回收。... .so 文件原生代码)。...在某些情况下,例如,为了确定在缓存中保存多少数据比较安全,您可能需要查询系统以确定当前设备确切可用堆空间大小。您可以通过调用 getMemoryClass() 向系统查询此数值。...此方法返回一个整数,表示应用堆可用兆字节数。 切换应用 切换应用 当用户在应用之间切换,Android 会将非前台应用保留在缓存。非前台应用就是指用户看不到或未运行前台服务(音乐播放)应用。...如果您应用具有缓存进程且保留了目前不需要资源,那么即使用户未使用您应用,它也会影响系统整体性能。当系统资源(内存)不足,它将会终止缓存进程。

1.5K10

Android入门教程 | Fragment 基础概念

可以通过两种方式向 Activity 布局添加片段(以下为代码片段,并非完整代码)。 静态方式 在 Activity 布局文件内声明片段。 在本例,您可以片段当作视图来为其指定布局属性。...不过,在调用 commit() 之前,可能希望调用 addToBackStack(),以事务添加到片段事务返回栈。该返回栈由 Activity 管理,允许用户通过按返回按钮返回片段状态。...例如,以下示例说明如何一个片段替换为另一个片段,以及如何在返回栈中保留先前状态: // Create new fragment and transaction Fragment newFragment...向 FragmentTransaction 添加更改顺序无关紧要,不过: 必须最后调用 commit()。 如果要向同一容器添加多个片段,则添加片段顺序决定它们在视图层次结构中出现顺序。...如果没有在执行删除片段事务时调用 addToBackStack(),则事务提交片段会被销毁,用户无法回退到该片段

3.5K40

最全windows操作系统快捷键

ALT+PRINT SCREEN    当前活动程序窗口以图象方式拷贝到剪贴板 CTRL+F4         关闭当前应用程序的当前文本(word) CTRL+F6         切换到当前应用程序下一个文本...在页面上各框架中切换(加shift反向) F5           刷新 CTRL+F5         强行刷新 目的快捷键 激活程序中的菜单栏 F10 执行菜单上相应命令 ALT+菜单带下划线字母...刷新“另存为”或“打开” 对话框 F5 六、使用“桌面”、“我电脑”和“Windows资源管理器”快捷键 选择项目,可以使用以下快捷键。...“回收站” 显示“查找:所有文件” F3 显示项目的快捷菜单 APPLICATION键 刷新窗口内容 F5 重命名项目 F2 选择所有项目 CTRL+ A 查看项目的属性 ALT+ ENTER或 ALT...快捷键目的 Windows徽标+PRINT SCREEN屏幕复制到剪贴板(包括鼠标光标) Windows徽标+SCROLL LOCK屏幕复制到剪贴板(不包括鼠标光标) Windows徽标+ PAGE

2K20

JavaScript 内存泄露4种方式及如何避免

本文探索常见客户端 JavaScript 内存泄露,以及如何使用 Chrome 开发工具发现问题。...在 JavaScript ,不需要引用是保留在代码变量,它不再需要,却指向一块本该被释放内存。有些人认为这是开发者错误。...换言之,回收节点内存,不必非要调用 removeEventListener 了。 3:脱离 DOM 引用 有时,保存 DOM 节点内部数据结构很有用。...代码片段做了一件事情:每次调用 replaceThing ,theThing 得到一个包含一个大数组和一个新闭包(someMethod)新对象。...someMethod 可以通过 theThing 使用,someMethod 与 unused 分享闭包作用域,尽管 unused从未使用,它引用 originalThing 迫使它保留在内存(防止被回收

4.7K52

javaonresume_java – 直接onResume()调用替代方法

大家好,又见面了,我是你们朋友全栈君。 我正在重写我Android应用以消除对onResume()直接调用....我解决方案是600行代码收集到一个单独例程,并从onResume()内部和onOptionsItemSelected()多个点调用它....你onResume()方法实现本身是无害.但是调用超级方法是super.onResume();会让系统认为它是恢复事件另一种情况.这将导致刷新视图和类似内部工作不必要资源使用.因此,在任何情况下都必须避免显式调用生命周期回调方法...程序总是逐行执行.如何安排代码没有任何区别.程序正确地构造成方法,类等是为了程序员方便.对于系统来说,它始终是一系列线条.因此,在执行繁重任务,UI可能变得没有响应,因为它必须等到轮到它.....当然还有其他选择(AsyncTask).您可以在线轻松找到更多相关信息(尝试搜索“Android多线程”).随意问更多.

88520

Linux写一个进度条小程序

这里由于是直接往显示器打印,所以采用刷新方式为行缓冲。 所以执行碰到 ‘\n’ ,就会把在缓冲区 (换行符之前) 内容全部刷新出来。...之前说过 \r 是换行,所以当 printf 遇到 \r ,就把光标移到开头。sleep 睡眠后,当程序退出,shell 打印提示符,就覆盖了字符串。 拓展 : 数据真的是临时保留在缓冲区里吗?...,数据就显示在了屏幕;且因为 ‘\r’ 原因,光标指向字符串开头;当打印 shell 提示符,就直接从光标位置开始覆盖。...倒计时就是在屏幕不断显示数字,每次在同一位置显示,并将之前数据覆盖。 既然是每次要从头开始覆盖,那么就可以用 ‘\r’ 来实现每次回到行首,并且可以通过相应格式化控制显示多位打印。...进度条是一行,所以需要用到 '\r' ,每次都需要使用 fllush 主动刷新缓冲区。 每次刷新出数据之后, = 填充到数组,并且显示 > 。在最后一次显示,控制 > 不要显示。

1.6K10
领券